Python "print" 函数不适用于 crontab

Python "print" function not working with crontab

我试图在基于 linux 的 OS 中定期 运行 一些 python 脚本,经过一些快速研究,我发现 crontab is a classic approach for this. I was a newbie to that command, so I made sure to keep in mind the common existing recommendations 为此,我(谨慎地)决定首先使用一个非常简单的 python 代码,myscript.py:

#!/usr/bin/python3

print("If you see this, your periodic code ran OK!")

'cron table' (crontab -l) 文件如下所示,假设每分钟 运行 myscript.py (我想快速测试一下):

* * * * * /usr/bin/python3 /home/my_user_folder/Desktop/test/myscript.py

秒过去了,脚本到达了它的第一分钟...但什么也没发生。为了“解决它”,我尝试了几件事,但奇怪的是(对我来说)我意识到大多数(如果不是全部)教程和帖子,用于在 中存储消息.txt 或类似文件。我通过将 myscript.py 修改为:

做了类似的事情(几个小时后,试验但没有成功)
#!/usr/bin/python3

# NOTES:
# 1. This code is the 'final version' after several trials
# 2. Remember that I was aiming to automate anything, just
#    to get familiar with `crontab`; in this case, storing
#    the current time to some .txt file was enough.

import time

t = time.localtime()
current_time = time.strftime("%H:%M:%S", t)

with open('/home/my_user_folder/Desktop/test/readme.txt', 'a') as f:
    f.write(current_time)
    f.write('\n')

...并且有效。我觉得有点傻,因为我开始意识到我的初始实现(关于代码、环境设置、权限等)从一开始确实是正确的,但是 使用 Python使用 crontab 'did not work'...

命令 print 到 'test' 周期性任务

为什么?

从 crontab 执行的命令的标准输出 而不是 发送到您的 shell 的标准输出。 (这样做没有多大意义;在您注销后,cron 作业将继续 运行。)

通常 crontab 将(尝试)email the output to you. This is configurable.man 5 crontab` 获取更多信息。

与其修改 Python 脚本来重定向其自身的输出,不如在 crontab 条目本身中重定向输出:

* * * * * /usr/bin/python3 /home/my_user_folder/Desktop/test/myscript.py > output.txt