У меня есть скрипт 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 должно предоставить вам данные, которые вы хотите получить в трассировке.