在Crontab上执行python脚本

时间:2012-01-04 13:46:02

标签: linux cron crontab

我正在尝试使用linux crontab执行python脚本,但我找到了很多解决方案,但没有一个能够正常工作。例如:在/etc/cron.d编辑anacron或使用crontab -e。

我想每10分钟运行一次这个脚本。

我必须编辑哪个文件来配置它?

提前致谢

修改

我把这一行放在文件的末尾,但它不会改变任何东西。我必须重新启动任何服务吗?

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py

编辑[2]

伙计们,我已经关注了源代码。这里可能有问题,但是当我手动执行它时,它可以工作:

http://pastebin.com/qsWHNzqT

3 个答案:

答案 0 :(得分:112)

只需使用crontab -e并按照此处的教程进行操作:

http://adminschoice.com/crontab-quick-reference

请参阅第3点,了解如何指定频率的指南。

根据您的要求,它应该有效:

*/10 * * * * /usr/bin/python script.py

答案 1 :(得分:55)

将您的脚本放在以

开头的文件foo.py
#!/usr/bin/python

然后使用

为该脚本授予执行权限
chmod a+x foo.py

并使用foo.pycrontab文件的完整路径。

请参阅处理execve(2)

shebang文档

答案 2 :(得分:14)

正如您所提到的不会改变任何内容

首先,您应该从crontab执行中重定向stdin和stderr,如下所示:

*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py > /tmp/listener.log 2>&1

然后您可以查看文件/tmp/listener.log以查看脚本是否按预期执行。

其次,通过观看程序创建的文件猜猜你的意思改变任何东西

f = file('counter', 'r+w')
json_file = file('json_file_create_server.json','r+w')

上面的crontab作业不会在目录/home/souza/Documets/Listener中创建这些文件,因为cron作业不在此目录中执行,并且您在程序中使用相对路径。因此,要在目录/home/souza/Documets/Listener中创建这些文件,以下cron作业将起到作用:

*/2 * * * * cd /home/souza/Documets/Listener && /usr/bin/python listener.py > /tmp/listener.log 2>&1

切换到工作目录并从那里执行脚本,然后您可以查看已就地创建的文件。