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

Захват ошибок в python cronjobs

У меня есть скрипт Python в качестве задания cron, который называется так

/path/to/python /path/to/myscript myparam

Когда в скрипте возникает ошибка, задание cron автоматически завершается ошибкой. Когда я запускаю ту же команду из командной строки, я получаю трассировку стека. Как я могу вывести мой скрипт для вывода трассировки стека (или записать его в файл) при запуске в качестве задания cron? Я уже установил MAILTO переменная. Я также пробовал поставить

/path/to/python /path/to/myscript myparam 2>&1 >> /path/to/logfile

в crontab, но файл журнала остается пустым.

Обновить: Вызов без перенаправления вывода теперь работает. Это была не проблема со сценарием python, а неправильный разделитель в настройке MAILTO crontab. Помните: используйте запятые и не ставьте пробелы после запятых!

Вы использовали неправильный порядок.

  • 2>&1 означает, что стандартная ошибка перенаправляется на стандартный вывод и оба на терминал
  • >> /path/to/logfile перенаправляет стандартный вывод в файл журнала. Вы не упомянули стандартную ошибку, поэтому она все равно попадет в терминал.

Попробуй это:

/path/to/python /path/to/myscript myparam >> /path/to/logfile 2>&1

Убедитесь, что у пользователя, запускающего этот сценарий, есть разрешение на запись в файл журнала.

Ознакомьтесь с аналогичной ситуацией, проработанной здесь http://www.velocityreviews.com/forums/t646893-running-a-python-script-from-crontab.html. Добавление обработки исключений, ведения журнала, почты и stderr должно предоставить вам данные, которые вы хотите получить в трассировке.