Crontab закрывает фоновый процесс? - PullRequest
0 голосов
/ 14 декабря 2018

Я тестирую bash-скрипт, который я надеюсь запустить как задание cron для сканирования журнала загрузки и выполнения трудоемких преобразований файлов изображений.Чтобы запустить несколько преобразований одновременно, первый скрипт просматривает журнал загрузки и отправляет имя файла второму скрипту, который я настроил для запуска в качестве фонового процесса, используя &.

Пара скриптов работает хорошо,но когда процесс завершится, я должен нажать клавишу ввода, чтобы вернуться в командную строку.Это не проблема, когда я запускаю тест, но я не уверен, что это поведение имеет последствия при запуске как задание cron.

Будет ли это проблемой?Если да, есть ли способ закрыть «терминал», запускающий первый скрипт из crontab?

Вот усеченная форма моего кода:

Скрипт 1 (запускается crontab):

for i in file1 file2 file3 etc
do
bash /path/to/convert.sh $i &
done
exit 0

Сценарий 2 (convert.sh)

fileName=${1?no file given}
jpegName=$(echo $fileName | sed s/tif/jpg/g)
convert $fileName $jpegName
exit 0

Спасибо за любую помощь / гарантии, которые вы можете дать!

1 Ответ

0 голосов
/ 15 декабря 2018

вам не нужен скрипт 2. вы можете преобразовать его в функцию и поместить в скрипт 1.

Другая проблема заключается в том, что вы запускаете convert.sh неконтролируемым образом.Вы не можете предвидеть, сколько процессов будет создано (фоновые процессы), и это может привести к серьезным перегрузкам производительности.

наконец, если вы не можете завершить процесс обычным способом, вы можете остановить его снова, используя cron, выполнив командуpkill script1.sh

...