Python 脚本未作为 cronjob 运行

Python 脚本未作为 cronjob 运行

我已经尝试了所有方法,并且看到了与此相关的其他问题,但我无论如何都无法将 python 脚本作为 cronjob 运行。

我已尝试以下操作。

* * * * * /usr/bin/python /home/myhome/myscript.py

所有myscript.py操作都是睡眠 30 秒,这样我就可以检查进程是否正在运行,但我还没有看到它。

import time
time.sleep(30)

我遗漏了什么?这不应该运行吗?我甚至尝试在 /tmp 中打开一个文件并在那里输出,但没有成功。我假设这是一些环境变量问题,但我不确定从哪里开始。

顺便说一句,这在命令行上运行良好。

答案1

是的,这应该可以正常运行,假设当您说“它在命令行上运行良好”时,您实际上是从 crontab 条目粘贴相同的命令。要检查的事项:

  1. cron 守护进程是否正在运行?(运行pidof cron
  2. 如果它正在运行,请尝试重新启动它。(取决于你的 Unix 风格,但类似于service cron restart/etc/init.d/cron restart
  3. 如果您的脚本仍然无法运行,请检查所有内容/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`

你不需要太担心细节,但它应该是某物每分钟。如果不是,那么一定出了问题。

相关内容