Crontab 没有记录到文件

Crontab 没有记录到文件

我有以下 cronjob:

@reboot /usr/local/bin/python3.9 /home/pi/push_bullet/push_bullet_socket.py >> /var/log/push_bullet_socket.py.log 2>&1

这是我的 crontab 上唯一的东西。当我查看 /var/log/push_bullet_socket.py.log 时,我看到该文件存在,但没有将任何 stdout 发送到文件。当它不作为 cronjob 运行时,该脚本工作正常,除了没有记录输出外,它作为 cronjob 工作正常。我可以确认打印语句正在 python 脚本中运行,但出于某种原因,它们没有输出到日志文件。

重启后 cron.log 中的内容如下:

May  2 10:01:03 raspberrypi cron[351]: (CRON) INFO (pidfile fd = 3)
May  2 10:01:03 raspberrypi cron[351]: (CRON) INFO (Running @reboot jobs)
May  2 10:01:03 raspberrypi CRON[401]: (root) CMD (python /bin/push_bullet_socket.py >> /var/log/push_bullet_socket.py.log 2>&1)
May  2 10:01:03 raspberrypi CRON[402]: (pi) CMD (/usr/local/bin/python3.9 /home/pi/push_bullet/push_bullet_socket.py >> /var/log/push_bullet_socket.py.log 2>&1)

答案1

与大多数其他运行时一样,Python 在未写入终端时会缓冲 stdout。(在 3.8 之前,这也适用于 stderr。)您的写入将被缓冲,直到它们累积到 8 kB,或者​​直到您调用sys.stdout.flush()print(..., flush=True)

在 3.9 中,您可以选择更改缓冲模式(行缓冲是您通常在终端上获得的):

sys.stdout.reconfigure(line_buffering=True)

相关内容