колотите цикл с условием продолжения, который повреждается в данном размере файла

Вы попытались использовать флаг-C на команде nm? Это должно demangle имена.

3
07.03.2013, 13:20
4 ответа
./gcd-rand.py 10000 10000 | head -c 32M > concievablyreallyhugefile

head прекратит читать после 32 МБ. Вскоре после head чтение остановок, gcd-rand.py получит сигнал SIGPIPE и выход.

Чтобы постараться не хранить усеченную последнюю строку, как Michael Kjörling заметил:

./gcd-rand.py 10000 10000 | head -c 32M | sed '$d' > concievablyreallyhugefile
3
27.01.2020, 21:14
  • 1
    Это. Передача по каналу является Unix Путем (TM), и это даст Вам точно столько данных, сколько Вы хотите. Конечно, это могло бы повредить получающийся файл посреди числа, таким образом, в общем случае последняя строка файла будет бессмысленна. Если бы Вы хотите принять меры против этого, вероятно, было бы лучше реализовать выходное ограничение размера в самом сценарии (искать len(), и не забудьте объяснять новую строку). отличная работа –  a CVn 10.03.2013, 01:21
  • 2
    @MichaelKjörling у последней усеченной строки. Снова передача по каналу спасает положение. –  Gilles 'SO- stop being evil' 10.03.2013, 18:34

Прием должен использовать тестовую команду test или эквивалент [ ... ]:

 while [ "$(du -m f|cut -f1)" -lt 32 ]
 do 
  ./gcd-rand.py 10000 10000 > "$f"
 done

Посмотрите help test для получения дополнительной информации.

Примечание:

test или [ команда является встроенным ударом. Справочная информация может быть получена в ударе через help test или help [. man test относится к test команда, которая используется, если оболочка имеет не такое встроенное или вызывается явно как /usr/bin/test.

2
27.01.2020, 21:14
  • 1
    man test Вы имели в виду(?) –  poige 07.03.2013, 13:42
  • 2
    Нет - посмотрите добавленную Ответную ноту. –  H.-Dirk Schmitt 07.03.2013, 13:47
  • 3
    Ха. help встроенное Bash, но нет zshдля, например, –  poige 07.03.2013, 14:03

Ваши циклы кода Python навсегда. Таким образом Вы могли бы хотеть выполнить его в фоновом режиме и затем уничтожить его, когда размер файла превышен. Как острота:

{ ./gcd-rand.py 10000 10000 > f & }; p=$!; while (( $(stat -c %s f) < 33554432 )); do sleep .1; done; kill $p

Примечание: выберите время сна, столь соответствующее вместо статистики, можно также использовать du, как предложенный Dirk.

1
27.01.2020, 21:14
  • 1
    Это хорошо, но необходимо использовать wc -c вместо stat, который позволит этому работать за пределами Linux. –  jordanm 07.03.2013, 17:23

Можно использовать ulimit команда, чтобы ограничить, как большой файл оболочка (или ее дети) может создать:

ulimit -f 32768
0
27.01.2020, 21:14

Теги

Похожие вопросы