Linux的debian crontab作业没有执行

我有一个位于/etc/cron.daily目录下的bash脚本foo.sh ,chmoded 700由root用户拥有,root用户的crontab列表没有改变(crontab -l)。 我以另一种方式运行cronjob而不是crontab -l和/或crontab -e(例如,在特定的Debian情况下,我没有用/etc/init.d/cron重启cron守护进程)。 尽pipetesting作业文件正在类似条件下运行。 该脚本被debugging,可以作为一个独立的任务运行,而不会返回错误。 我也检查日志(/ var / log / syslog),没有错在那里。

但是 :这个特定的工作根本就没有执行。

Solutions Collecting From Web of "Linux的debian crontab作业没有执行"

哎呀。 猜猜我找到了“为什么”,或者至少是“如何”:

重命名不带“.sh”扩展名的作业文件名解决了这个问题。

我认为这是一个Debian的错误,但不是,正如下面的其他答案所述。

解决方案:通过全部删除来重命名脚本. 或从其名称+字符

/etc/cron.daily脚本由run-parts(参见man 8 run-parts)执行。

你从这个手册中找到一个简短的内容:

如果既没有给出–lsbsysinit选项也没有给出–regex选项,那么名称必须完全由大写和小写字母,数字,下划线和连字符组成。

从/ etc / crontab你可以看到每天的cron作业正在运行:

 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 

debian不使用anacron,也没有为运行部分指定–lsbsysinit选项(在这种情况下,'。'将在cron脚本文件中被接受为按照LSB分层和保留的命名空间)

无论如何,为了确保cron能够运行你的脚本,你总是可以运行run-parts并检查你的脚本是否在run-parts输出中列出:

 run-parts --test /etc/cron.daily 

要么

 run-parts --list /etc/cron.daily 

我希望我的评论能帮助你理解真正的问题。

以前给出的答案都是好的,可以接受的。 不过,我相信我还应该加上我的观点,即Debian Linux操作系统不支持cron作业文件名.+字符。 请参阅Debian政策手册中的相关部分 。

所以这只是为了避免混淆,这不是一个错误。 这就是Debian的工作原理。