6

这是我的 crontab 文件的样子:

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

这就是我的 python 脚本的样子:

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

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

感谢任何帮助!过去 4 小时我一直在玩它,但没有运气。

4

8 回答 8

4

有两种方法可以创建 crontab——每个用户或全局。对于全局 crontab (/etc/crontab),您指定用户,如下所示:

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

对于您不使用的用户 crontab,根据:

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是否实际运行。

于 2009-04-03T06:56:02.603 回答
1

更新...

将内容替换为

* * * * * date >> /tmp/foo 

这个链接有帮助吗?

删除它应该创建的文件。它会回来吗?我以为每个用户都有自己的 crontab 文件,所以上线的用户是怀疑的。
是否有人对你开了个玩笑并用无操作替换了 python 二进制文件?

我不得不认为 cron 不能正常工作,因为 echo 不起作用。您是否确保使用 echo 将输出目录更改为 /tmp?

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

于 2009-04-03T00:29:27.540 回答
1
chmod 755 /root/test.py

接着

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

应该管用。

于 2011-09-15T13:58:21.910 回答
0

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

于 2009-04-03T01:51:30.027 回答
0

尝试只发送标准输出到日志文件,而不是标准错误和粗壮:
/usr/bin/python /root/test.py > /root/classwatch.log

于 2009-04-03T01:58:46.640 回答
0

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

于 2009-04-03T00:36:33.123 回答
0

这在我的 RHES 4 Linux 机器上对我来说很好,如图所示(注意:我删除了 crontab 中的“root”用户名)。

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

于 2009-04-03T00:47:55.670 回答
0

这可能是因为之前声明的作业由于语法错误而失败。您可以粘贴整个 crontab 吗?就我所见,你的台词看起来不错。

于 2009-04-03T01:20:37.310 回答