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
我试图在基于 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