У меня есть задание cron, запускающее сценарий, который занимает около 6 часов. Проблема в том, что cron не отправляет мне результаты этого задания по почте, и я бы хотел этого.
У меня он есть в / etc / crontab, и это что-то вроде:
0 * * * * myuser /usr/local/bin/my-script
Да, этот запуск выполняется каждый час, но в сценарии есть файл блокировки, поэтому, если предыдущий запуск не завершился, новый запуск сценария немедленно завершится, ничего не делая.
Это система Debian 5.0 lenny, а MTA - Postfix.
Если задание прерывается (с помощью «kill $ PID») на ранней стадии выполнения, то я получаю электронное письмо с выводом задания. Кроме того, если я изменю сценарий, чтобы он выполнял в 10 раз меньше вещей, я также получу электронное письмо. Только если скрипт запущен несколько часов, я вообще не получаю письма.
Соответствующие строки ps afx
через короткое время после запуска cron:
8222 ? Ss 0:04 /usr/sbin/cron
13265 ? S 0:00 \_ /USR/SBIN/CRON
13297 ? Ss 0:00 \_ /bin/bash /usr/local/bin/my-script
13395 ? S 0:16 | \_ /usr/bin/python /usr/local/bin/some-script.py
17065 ? S 0:00 \_ /usr/sbin/sendmail -i -FCronDaemon -oem myuser
17066 ? S 0:00 \_ /usr/sbin/postdrop -r
Таким образом, похоже, что MTA уже вызывается при запуске задания cron, а не при его завершении. Может это быть связано с проблемой? Может быть, Postfix не любит postdrop
работает так долго, и время ожидания истекло, что ли? Как я могу решить проблему - мне нужно отправить мне результат по электронной почте.
Как обходной путь: перенаправить вывод в файл и отправить его по почте из вашего cron-скрипта?
В качестве инструмента отладки: запустите из cron серию скриптов, которые просто выводят дату, выводят их имя, предполагаемую продолжительность сна, засыпают n минут, выводят дату и затем закрываются. Я бы запустил их все одновременно, чтобы получить ответ через 7 часов. Если вы протестируете время сна продолжительностью от 1 часа до 7 часов с шагом, скажем, 10 минут, вы узнаете, является ли это общей проблемой тайм-аута или что-то связано только с вашим скриптом.