如何使用cron调度运行python程序

时间:2014-03-13 18:36:16

标签: python ubuntu cron

我想在某个时间每天运行一个python webscraping程序。为此,我在ubuntu的cron中使用此命令

28 22 * * * root /home/ahmed/Desktop python hello.py

它不起作用。一定有什么问题。有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

尝试将#!/usr/bin/python(称为shebang行)添加到Python脚本的顶部,然后

28 22 * * * root /home/ahmed/Desktop/hello.py

您必须使您的脚本像这样执行(将其作为单独的命令运行): sudo chmod +x /home/ahmed/Desktop/hello.py

来自维基百科上的Shebang page

  

在类Unix操作系统下,运行带有shebang的脚本时   作为程序,程序加载程序解析脚本的其余部分   初始行作为翻译指令;指定的解释器   而是运行程序,将其作为参数传递给它   最初在尝试运行脚本时使用。[8]例如,如果是   脚本以路径" path / to / script"命名,并以。开头   以下行:   #!/ bin / sh然后指示程序加载程序运行程序" / bin / sh"相反(通常这是Bourne shell或兼容的   shell),传递" path / to / script"作为第一个论点。

如果你不想改变任何东西,这也会有效:

28 22 * * * root python /home/ahmed/Desktop/hello.py

答案 1 :(得分:2)

/home/ahmed/Desktop(最有可能!)不是有效的命令名。你想要

28 22 * * * root python hello.py

或可能

28 22 * * * root python /home/ahmed/Desktop/hello.py

在某种程度上取决于你将文件夹名称放在那里的原因。

普通用户crontab的语法不同。我可以想象没有合理的理由将{sciing program}作为root运行。要从您自己的crontab运行它,您应该使用

28 22 * * * python /home/ahmed/Desktop/hello.py

(可能没有路径名,或者在命令行中的其他位置使用路径)。