我正在尝试使用linux crontab执行python脚本,但我找到了很多解决方案,但没有一个能够正常工作。例如:在/etc/cron.d编辑anacron或使用crontab -e。
我想每10分钟运行一次这个脚本。
我必须编辑哪个文件来配置它?
提前致谢
修改
我把这一行放在文件的末尾,但它不会改变任何东西。我必须重新启动任何服务吗?
*/2 * * * * /usr/bin/python /home/souza/Documets/Listener/listener.py
编辑[2]
伙计们,我已经关注了源代码。这里可能有问题,但是当我手动执行它时,它可以工作:
答案 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.py
中crontab
文件的完整路径。
请参阅处理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
切换到工作目录并从那里执行脚本,然后您可以查看已就地创建的文件。