首页 文章

linux debian crontab作业没有执行

提问于
浏览
7

我有一个bash脚本foo.sh位于 /etc/cron.daily 目录,chmoded 700,由root拥有,crontab列表为root用户不变(crontab -l)从核心Debian安装 . 我确实以不同于crontab -l和/或crontab -e的方式运行cronjob(例如我没有使用/etc/init.d/cron重新启动cron守护进程,因为在特定的Debian 's case). Despite a test job file is running under similar conditions. The script is debugged and can be run as a standalone task without returning errors. I' ve中也建议检查日志(/ var / log) / syslog)并没有错 .

But :这个特殊的工作根本没有执行 .

3 回答

  • 0

    哎呀 . 猜猜我发现了“为什么”或者至少是“如何”:

    只有 renaming the job filename without ".sh" extension 解决了这个问题 .

    我认为这是Debian的错误但不是,如下面的其他答案中所述 .

    解决方案:通过从名称中删除所有 .+ 个字符来重命名脚本

  • 8

    /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,并且没有为run-parts指定--lsbsysinit选项(在这种情况下' . '将在cron脚本文件名中根据LSB层次结构和保留名称空间接受)

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

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

    要么

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

    我希望我的评论可以帮助您了解真正的问题 .

  • 13

    以前给出的所有答案都是好的,并且可以接受 . 但是,我相信我应该加上我的观点,以表明Debian Linux操作系统不支持包含 .+ 字符的cron作业文件名 . 请参阅Debian Policy Manual中的relevant section .

    所以这只是为了避免混淆,这不是一个错误 . 这就是Debian的工作方式 .

相关问题