Назад | Перейти на главную страницу

длительное задание cron не отправляет свой вывод по почте

У меня есть задание 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 минут, вы узнаете, является ли это общей проблемой тайм-аута или что-то связано только с вашим скриптом.