【问题标题】:Newly added jobs not running in cron.dailycron.daily 中未运行的新添加作业
【发布时间】:2017-09-24 11:55:37
【问题描述】:

我正在尝试添加每日 cron 作业来备份数据库。我可以通过运行sh /path/to/file/backup.sh 手动执行此操作,但是当我将文件放在 cron.daily 目录中时,它不会每天运行。为了尝试诊断它,我在 cron.daily 中创建了一个名为 test 的测试文件,以查看它是否会运行。当我运行run-parts --test /etc/cron.daily 时,我得到了输出

/etc/cron.daily/apache2 /etc/cron.daily/apt /etc/cron.daily/bsdmainutils /etc/cron.daily/dpkg /etc/cron.daily/etckeeper /etc/cron.daily/logrotate

然后我尝试将 logrotate 的内容复制到一个新文件,进行测试,然后再次运行 run-parts,但结果相同。

测试:

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

我需要做一些特别的事情来让 cron 识别 cron.daily 中新添加的任务吗?

这不是 cron.daily 独有的,我也尝试过每月、每周和每小时,结果相同。我也试过重启 cron 没有成功。我在 Debian 7.2 上运行它。

【问题讨论】:

  • 您的新文件的权限是否与其他文件的权限匹配(0644)?
  • @BradBales welp 这似乎可以解决问题。我更改了文件的权限以匹配其他文件,并使用run-parts 运行 cron.daily,它们都运行了。谢谢你,伙计。如果你能从中得出一个答案,我会接受。
  • 谢谢,@notblakshelton!上次我与 cron 搏斗时,我的文件名中有一个点,但无法弄清楚它为什么没有运行:)

标签: cron cron-task


【解决方案1】:

有几件事可以阻止 /etc/cron* 目录中的文件运行(例如 /etc/cron.daily):

  1. 权限。确保文件的权限为 0644。

  2. 文件名必须满足特定条件。从文档中:“...它们必须完全由字母、数字组成,并且只能包含特殊符号、下划线 ('_') 和连字符 ('-')。任何不符合这些要求的文件都将不被 run-parts 执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多