我已经尝试了所有方法,并且看到了与此相关的其他问题,但我无论如何都无法将 python 脚本作为 cronjob 运行。
我已尝试以下操作。
* * * * * /usr/bin/python /home/myhome/myscript.py
所有myscript.py
操作都是睡眠 30 秒,这样我就可以检查进程是否正在运行,但我还没有看到它。
import time
time.sleep(30)
我遗漏了什么?这不应该运行吗?我甚至尝试在 /tmp 中打开一个文件并在那里输出,但没有成功。我假设这是一些环境变量问题,但我不确定从哪里开始。
顺便说一句,这在命令行上运行良好。
答案1
是的,这应该可以正常运行,假设当您说“它在命令行上运行良好”时,您实际上是从 crontab 条目粘贴相同的命令。要检查的事项:
- cron 守护进程是否正在运行?(运行
pidof cron
) - 如果它正在运行,请尝试重新启动它。(取决于你的 Unix 风格,但类似于
service cron restart
或/etc/init.d/cron restart
) - 如果您的脚本仍然无法运行,请检查所有内容
/var/log
以获得适当的输出 - 具体文件取决于您的 syslog 配置,但如果不存在,/var/log/messages
则/var/log/syslog
是好的选择。/var/log/cron
注意:您需要root
执行大部分这些操作 - 如果您无权访问,则需要与管理机器的人员交谈。
另外,当您说在 中打开文件时/tmp
,这可能是确保它正在运行的最可靠方法。在脚本的开头(导入或任何其他操作之前)添加以下内容:
with open("/tmp/testfile", "a") as fd:
fd.write("I am running\n")
您还可以检查您的 crontab 是否已正确安装 - 它应该放置在类似的地方/var/spool/cron/crontabs
(这是在 Ubuntu Linux 上,在不同的 Unix 版本上可能会有所不同)。您应该在其中看到一个带有您的用户名的文件,其中应该包含您的条目。
最后,如果你真的很绝望,你可以检查strace
你的 cron 进程,看看它在做什么:
sudo strace -f -p `pidof cron`
你不需要太担心细节,但它应该是某物每分钟。如果不是,那么一定出了问题。