坚持使用debian上的crontab执行python脚本!

时间:2009-04-03 00:18:22

标签: python debian cron crontab

这是我的crontab文件的样子:

* * * * *  root /usr/bin/python /root/test.py >> /root/classwatch.log 2>&1

这就是我的python脚本:

#!/usr/bin/python
print "hello"

cronjob创建日志文件。但它是空的。我也很确定python文件没有被执行。

感谢任何帮助!我已经玩了4个小时而没有运气。

8 个答案:

答案 0 :(得分:4)

创建crontab有两种方法 - 每个用户或全局。对于全局crontab(/ etc / crontab),您可以根据以下内容指定用户:

# m h dom mon dow user  command
17  *   *   *   *   root        cd / && run-parts --report /etc/cron.hourly

对于用户crontabs,你没有,按照:

aj@wherever:~$ crontab -l
0 * * * * /home/aj/bin/update-foobar

要通过#运行python脚本!您只需使脚本可执行(chmod 755 /root/test.py),然后直接调用它,例如:

/root/test.py

如果您不想这样做,可以通过python解释器手动运行,如:

/usr/bin/python /root/test.py

这假设您正在运行的任何用户(即/ etc / crontab中的用户,或者您正在运行crontab -e的用户)都有权查看python脚本 - / root可能无法访问常规用户,例如

您可以通过添加以下内容来了解​​您的脚本是否正在执行:

import time
time.sleep(20)   # pause for 20 seconds

然后检查“top”或“ps aux”或“pstree”以查看python是否实际运行。

答案 1 :(得分:1)

...更新

替换内容
* * * * * date >> /tmp/foo 

link有帮助吗?

删除它应该创建的文件。它会回来吗? 我认为每个用户都有自己的crontab文件,因此该行的用户是supsect 有人在你玩笑话并用一个无操作替换python二进制文件吗?

我必须认为cron不正常,因为回声不起作用。您确定使用echo将输出目录更改为/ tmp吗?

你可以对文件执行od(八进制转储)并查看是否可以将控制字符或选项卡放入cron文件中?

答案 2 :(得分:1)

chmod 755 /root/test.py

然后

* * * * * /root/test.py >> /root/classwatch.log 2>&1

应该有用。

答案 3 :(得分:0)

您是否尝试过将脚本放在其他位置(例如/ usr / local / bin /)?

答案 4 :(得分:0)

这在我的RHES 4 Linux机箱上运行正常,如图所示(注意:我删除了crontab中的'root'用户名)。

我怀疑您安装cron作业的方式或系统上的cron配置有问题。你是怎么安装的?您使用的是crontab -e还是其他方法?您是否能够成功运行root的任何其他cron作业?

答案 5 :(得分:0)

可能是由于语法错误导致之前声明的作业失败。你能粘贴整个crontab吗?就我所见,你的生产线看起来很好。

答案 6 :(得分:0)

如果您正在编辑/ etc / crontab,则crontab条目是正确的 - 但是如果您正在编辑它 使用普通用户的crontab(即crontab -e,crontab crontabfle等) 根条目在语法上是不正确的。

答案 7 :(得分:0)

尝试将stdout发送到日志文件,而不是stderr和stout:
/ usr / bin / python /root/test.py> /root/classwatch.log