为什么我的crontab不起作用?

时间:2015-07-25 03:01:17

标签: linux bash crontab

我计划每分钟运行一些bash脚本,我写道:

* * * * * bash ~/Dropbox/temp_scripts/run_all_scripts 

在crontab中。

它应该每分钟运行一次,但它不起作用。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

将评论转移到答案中。

将I / O重定向添加到crontab条目中的命令行:

>/tmp/run_all_scripts.out 2>/tmp/run_all_scripts.err

经过一两分钟后,查看文件的内容。考虑记录环境,看看是否是问题的一部分。并考虑使用bash -x而不是bash

如果您仍然没有收到任何内容(/tmp中的文件未创建),则您cron会遇到问题;守护程序没有运行,或者您的用户没有权限使用它(但crontab没有告诉您),或者您还没有提交crontab程序(crontab -l说什么?),或者......真正错误的。

另请注意,cron作业的输出通常(好吧,至少有时候 - 在Mac OS X上,对于我目前使用的系统,以及Solaris用于我之前使用的另一个)通过电子邮件发送给工作人员。您应该查看系统上的电子邮件。

  

谢谢!我已经修好了!它不起作用的原因是我使用" ls -a .sh"在脚本中,当crontab在它正在执行的文件夹中找不到任何*.sh个文件时。将其修改为" ls -a $HOME/Dropbox/temp_scripts/.sh"时,一切正常!这种调试技术非常有用!

在很多方面,它是最基本的调试技术 - 确保你看到实际发生的事情。如果您不确定为什么shell脚本不起作用,请确保您可以看到它正在执行以及它以输出的方式生成什么,并且(经常)确保您可以看到它正在使用bash -x或等效执行。 (AFAIK,所有shell都支持-x来跟踪执行情况。)