linux - Python “打印”功能不适用于 crontab

我试图在基于 linux 的操作系统中定期运行一些 python 脚本,经过快速研究,我发现 https://linuxize.com/post/cron-jobs-every-5-10-15-minutes/ 是一种经典的方法。我是该命令的新手,所以我确保牢记现有的常见https://stackoverflow.com/questions/12534135/crontab-not-executing-a-python-script,并且(谨慎地)我决定首先使用一个非常简单的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

几秒钟过去了,脚本到达了它的第一分钟……什么也没发生。为了“解决它”,我尝试了几件事,但奇怪的是(对我来说)我意识到大多数(如果不是全部)教程和帖子都用于 store .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 命令 print 来“测试” ' 带有 crontab 的重复任务'不起作用'...

为什么?

回答1

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

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

您可以在 crontab 条目本身中重定向输出,而不是修改 Python 脚本来重定向自己的输出:

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

相似文章

php - 用户不允许使用 crontab

我想每天编辑cron选项卡以删除/添加一些作业..所以我添加了cron作业(助手作业)来运行php脚本来处理这些编辑。当我通过浏览器运行此脚本时工作正常..但是当它使用未运行的辅助作业运行时,我从cp...

最新文章