奇怪的crontab行为

今天晚上我第一次玩cron,开始有奇怪的结果。 我试图运行的脚本是一个监视器,它允许我使用Web界面pipe理其他脚本。 当我从shell运行看门狗脚本时, sudo ./watchdog.py每次都能正常工作,并启动它应该使用的脚本。 当我将它添加到crotab中时, sudo crontab -e*/1 * * * * /home/user/watchdog.py ,它不会启动它们,或者它们在启动后立即崩溃。 这些脚本确实需要以root身份运行,所以我也尝试了*/1 * * * * sudo /home/user/watchdog.py ,但没有任何改变。

我的问题是2部分。

1:如何解决这个问题?

2:是什么原因造成的,为什么?

1:如何解决这个问题?

开始logging你的脚本stderrstdout到一个文件(虽然默认情况下, cron应该邮寄给你的输出)。 你可以做一些事情:

 */1 * * * * sudo /home/user/watchdog.py > /tmp/watchdog.log 2>&1 

这会将脚本生成的输出放在/tmp/watchdog.log

仅供参考:请注意, */1本身与“ *完全相同。

2:是什么原因造成的,为什么?

如果在/etc/sudoers设置了requiretty标志,那么sudo只能从真实的TTY(例如,来自交互式login会话)中操作。 这不一定是这里发生的事情,但这是要检查的东西。 沿着以下线寻找一条线:

 Defaults requiretty 

/etc/sudoers