Рейтинг:1

Работа Cron, кажется, работает, но ничего не выводится и через некоторое время была убита.

флаг fr
VII

Я пытаюсь запустить свои сценарии Python с помощью crontab. У меня есть 2 скрипта Python в одном каталоге. Первый файл1.py имеет только 1 строку печать(1). Второй файл файл2.py начинается с печать(2) но затем длинный код для запроса и обновления данных в моей базе данных SQL.

Моя установка в кронтаб -е что-то вроде этого (я настроил файлы для запуска каждую минуту и ​​сохраняю вывод в cron.log

* * * * * cd /path/to/files && python3 file1.py >> /path/to/files/cron.log 2>&1
* * * * * cd /path/to/files && python3 file2.py >> /path/to/files/cron.log 2>&1

Когда я проверяю вывод в cron.log, сначала я вижу только 1, который из файл1.py но я не вижу никаких 2, выход файл2.py. Однако через некоторое время, может минут через 10, я вижу Убит в cron.log.

я думаю Убит сообщение означает, что cron начал выполнение задания файл2.py и убил работу через некоторое время. Меня не интересует причина, по которой cron убивает мою работу. Что меня смущает, так это то, что cron запустил задание для запуска файл2.py, почему нет 2 в cron.log. Все, что я вижу, это 1 и Убит. Оба этих файла запускаются без проблем, когда я запускаю их вручную. Ценю любую помощь

VII avatar
флаг fr
VII
извините мой плохой, отредактировано
Рейтинг:1
флаг hr

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

Для иллюстрации дано

$ cat файл2.py
время импорта
печать(2)
время сна(5)

тогда

$ тайм-аут 3 python3 file2.py
2

тогда как

$ тайм-аут 3 python3 file2.py | кот
Прекращено

Если вы заставите питон3 чтобы разбуферить его потоки, вы, вероятно, увидите ожидаемый вывод журнала:

$ тайм-аут 3 python3 -u file2.py | кот
2
Прекращено
VII avatar
флаг fr
VII
спасибо за ваш ответ, да, мне нужно разбуферить вывод. Извините, это мой первый вопрос в этом сообществе, поэтому пока не могу проголосовать за ваш ответ (недостаточно репутации).
mondotofu avatar
флаг cn
Имеет ли смысл записывать вывод в два отдельных файла cron.log, чтобы уменьшить количество конфликтов?
флаг hr
@mondotofu, это хороший вопрос - я действительно не знаю

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.