【问题标题】:linux debian crontab job not executed [duplicate]linux debian crontab作业未执行[重复]
【发布时间】:2011-07-26 02:07:53
【问题描述】:

我有一个 bash 脚本 foo.sh 位于 /etc/cron.daily 目录中,chmoded 700,由 root 拥有,root 用户的 crontab 列表是与核心 Debian 安装保持不变(crontab -l)。我确实以 crontab -l 和/或 crontab -e 以外的另一种方式运行 cronjob(例如,我没有按照特定 Debian 案例中的建议使用 /etc/init.d/cron 重新启动 cron 守护程序)。尽管测试作业文件在类似条件下运行。该脚本经过调试,可以作为独立任务运行而不会返回错误。我还检查了日志 (/var/log/syslog),里面没有任何问题。

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

【问题讨论】:

    标签: linux debian crontab


    【解决方案1】:

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

    只有重命名作业文件名而不使用“.sh”扩展名解决了这个问题。

    我认为这是 Debian 的错误,但事实并非如此,如下面的其他答案所述。

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

    【讨论】:

    • 它是 debian 特有的。就他们而言,这不是错误。
    • @gms8994:谢谢,但我没有在任何地方找到关于作业文件名的这一点。我是故意找到的,做二分法测试。
    • 我也是这样发现的;请参阅my question 了解更多信息。
    【解决方案2】:

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

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

    【讨论】:

    • 嗨,笨蛋,感谢您的努力编辑。对我来说,它如何被称为“句号”或“点”或什么都没有,这并不重要。对我来说,意思是一样的。现在只要看标志就清楚了。
    【解决方案3】:

    /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
    

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

    【讨论】:

    • 是的,它确实帮助我进一步了解 cronjob 背景。我不知道这些点。谢谢 + 1 分。
    • 很好的答案 - 你只是节省了我一些调试时间。
    • 即使你使用了--lsbsysinit,run-parts 仍然不会接受foo.sh。不过它会接受foo.-sh。它需要匹配这个正则表达式:^_?([a-z0-9_.]+-)+[a-z0-9]+$
    • 我可以测试我的 crontab 吗?
    猜你喜欢
    • 2016-01-28
    • 1970-01-01
    • 2020-06-19
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2020-09-04
    相关资源
    最近更新 更多