我的 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
,检查文件是否在那里。