这是我的 crontab 文件的样子:
* * * * * root /usr/bin/python /root/test.py >> /root/classwatch.log 2>&1
这就是我的 python 脚本的样子:
#!/usr/bin/python
print "hello"
cronjob 创建日志文件。但它是空的。我也很确定 python 文件没有被执行。
感谢任何帮助!过去 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是否实际运行。
更新...
将内容替换为
* * * * * date >> /tmp/foo
这个链接有帮助吗?
删除它应该创建的文件。它会回来吗?我以为每个用户都有自己的 crontab 文件,所以上线的用户是怀疑的。
是否有人对你开了个玩笑并用无操作替换了 python 二进制文件?
我不得不认为 cron 不能正常工作,因为 echo 不起作用。您是否确保使用 echo 将输出目录更改为 /tmp?
您可以对文件进行 od(八进制转储)并查看是否将控制字符或制表符放入 cron 文件中?
chmod 755 /root/test.py
接着
* * * * * /root/test.py >> /root/classwatch.log 2>&1
应该管用。
如果您正在编辑 /etc/crontab,则 crontab 条目是正确的 - 但是,如果您使用的是普通用户的 crontab(即 crontab -e、crontab crontabfle 等),则根条目在语法上是不正确的。
尝试只发送标准输出到日志文件,而不是标准错误和粗壮:
/usr/bin/python /root/test.py > /root/classwatch.log
您是否尝试将脚本放在其他地方(例如 /usr/local/bin/)?
这在我的 RHES 4 Linux 机器上对我来说很好,如图所示(注意:我删除了 crontab 中的“root”用户名)。
我怀疑您安装 cron 作业的方式或系统上的 cron 配置有问题。你怎么安装这个?你是用的crontab -e
还是其他方法?您是否能够成功地为 root 运行任何其他 cron 作业?
这可能是因为之前声明的作业由于语法错误而失败。您可以粘贴整个 crontab 吗?就我所见,你的台词看起来不错。