У меня есть процесс Python, который я запускаю ночью через crontab. Он очищает API, к которому у меня ограниченный доступ, поэтому регулярно приходится останавливаться и ждать час.
По моим оценкам, работа должна занять 5-6 часов.
На данный момент у меня есть crontab как таковой:
05 01 * * * python3 /home/{my username}/path/to/process/main.py >> /var/log/process_name.log 2>&1
Это замечательно и доказало, что файл работает, но я могу проверить вывод только после того, как он завершит работу, что для я не идеален. Учитывая время, необходимое для запуска, я бы предпочел, чтобы cron регистрировал результаты и ошибки в реальном времени.
Это немного больше проблема сейчас, так как кажется, что мои оценки неверны, и я могу ждать намного дольше, чем я думаю, - в таком случае я хотел бы посмотреть, что регистрируется, чтобы я мог понять, почему.
Есть ли способ зарегистрировать вывод cron в режиме реального времени?
То, в чем Вы нуждаетесь, является названным сбрасыванием механизма: то, чтобы вынуждать процесс записать его вывод, который иначе остался бы буферизированным до завершения.
Сценарии оболочки сбрасывают на линию за линией основание. При необходимости в выводе сценария оболочки, прежде чем сценарий будет закончен, удостоверьтесь, что он содержит новую строку.
программы Python могут явно сбросить свой stdout путем вызова метода сброса:
import sys
sys.stdout.flush()