Контакт с прерыванием сценария

поскольку Debian основывал дистрибутивы:

/etc/rc.local

поставьте свое имя сценария там и не забывайте полный путь

4
19.09.2012, 10:33
2 ответа

find управляйте файлами возвратов в порядке каталога. Порядок каталога не стабилен; в некоторых файловых системах, если Вы добавляете или удаляете файл, он может влиять на порядок других файлов в том же каталоге.

Я подвергаю сомнению Ваше утверждение, что вид не является опцией. Если Ваша обработка каждого файла не чрезвычайно быстра, создавание списка файлов довольно быстро. Сохраните его в файл так, чтобы это могло быть снова использовано, если задание прервано.

Необходимо будет знать, где Вы кончили так или иначе, и возобновитесь оттуда. Возобновление из уже сгенерированного списка файлов будет легче, чем возобновление некоторого сложного перечисления в середине.

1
27.01.2020, 20:58
  • 1
    Да, я сделал утверждение без, проверяют. Вид и использование простое смещение для возобновления прекрасны. –  Pedro Lacerda 20.09.2012, 14:59

Сохраните вывод находки в файл и имейте свое использование сценария тот файл к как список файлов для обработки. Поскольку сценарий завершает обработку файла, имейте его, пишут имя файла в другой файл. Если сценарий будет прерван, то это будет простой вопрос для исключения файлов, уже обработанных, например, с grep, когда сценарий перезапущен. Пример:

touch files_already_processed
while IFS= read -r file
do
    # skip file if already processed
    grep -q -e "$file" files_already_processed && continue
    # process the file
    # processing code goes here
    echo "$file" >> files_already_processed
done <files_to_process
2
27.01.2020, 20:58
  • 1
    Ваш пример, масштабируемый линейно до 15k строк. files_already_processed с 1, 5, 10 и 15k строки взял меня 4, 22, 45 и 68 соответственно. Если это отношение продолжится до 250k, то это возьмет мне ~3h, просто уже пропускающий обработанные файлы. –  Pedro Lacerda 19.09.2012, 09:52
  • 2
    Obs: file_to_process был сгенерирован с seq 100000 и files_already_processed так же, но с переменными размерами (как отмечено прежде). Я остановил код сразу после того, как файлы были пропущены (т.е. break на строке 6). –  Pedro Lacerda 19.09.2012, 09:53
  • 3
    Прокомментируйте grep для первого показа, так как ничто еще не было обработано. Беспокойство о более эффективном внедрении, если система действительно отказывает с 250k строками в файле и необходимо перезапустить. Редактирование files_to_process и удаление первых строк N были бы простым подходом с N = wc -l files_already_processed. –  Kyle Jones 19.09.2012, 09:57
  • 4
    Несомненно, это могло отказать с 250k строками. Удалите grep, и первые строки N являются хорошими подходами, но мои пользователи не так умны. Завтра я попробую Ваше предложение.Спасибо. –  Pedro Lacerda 19.09.2012, 10:28

Теги

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