为什么我的 crontab 不运行 cron.daily 脚本?

为什么我的 crontab 不运行 cron.daily 脚本?

我的 crontab 文件在 /etc/ 中,
我有一个文件夹:/etc/cron.daily,其中包含 dbBackup_sh、logrotate 和 tmpreaper,
我每天手动运行这 3 个脚本,没有任何问题。

我的 crontab 不会运行每日脚本。
我的 crontab 文件有什么问题?

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
23 * * * * root cd / && run-parts --report /etc/cron.hourly
1 4 * * * root  cd / && run-parts --report /etc/cron.daily
48 3 * * 7 root cd / && run-parts --report /etc/cron.weekly
25 3 8 * * root cd / && run-parts --report /etc/cron.monthly

输出ls -la /etc/cron.daily/

-rw-r--r-- 1 root root 102 Feb 22 2021 .placeholder 
-rw-r--r-- 1 root root 449 Mar 29 2022 dbBackup_sh 
-rwxr-xr-x 1 root root 377 Feb 28 2021 logrotate 
-rwxr-xr-x 1 root root 4006 Sep 6 2019 tmpreaper 

答案1

里面的脚本/etc/cron.daily/必须是可执行的才能运行。(这还有额外的好处,如果您想在此暂时禁用 cron 作业,只需取消设置该特定脚本的可执行位。)

您的某个文件 ( dbBackup_sh) 未设置可执行位。请使用以下命令修复此问题:

sudo chmod +x /etc/cron.daily/dbBackup_sh

此外,正如@steeldriver 提到的,名称只能包含字母数字字符、破折号(-)和下划线(_) - 对您来说也是如此。

对我来说,修复权限后所有脚本似乎都会运行dbBackup_sh

测试 cron 脚本是否已运行的一个好方法是包含一行与文件相关的代码。你可以将以下内容添加到每个脚本中:(变量$0扩展为脚本名称。)

touch "/dev/shm/${0##*/}"

然后,明天查看文件夹内部/dev/shm,检查文件是否在那里。

相关内容