令我惊讶的是,我去年 12 月(2015 年)开始使用 crontab 和 rsync 备份一些测试文件的试验仍在运行,尽管在我唯一的 crontab 文件中,唯一的一行是
#55 20 * * * /home/Harry/testrsync/trial_bak.sh
当我认为几周后我已经结束试用时,它被或应该被添加的 # 注释掉。
我的问题是为什么它仍然被执行?或者还有其他方法可以执行此行(不带#)吗?
每天 20-55 点进行备份,仅保留最后 4 个,这仍然按照 crontab 条目和 Trial_bak.sh 脚本定义的方式进行。
我正在使用 zshell 和 Fedora 20,这是我更新到最新 Fedora 的准备工作的一部分。
解决了:
感谢所有回复的人。根据@Marki555的回答,我发现我有一个/etc/cron.daily
目录,其中包含执行每日备份的脚本,因此 crontab 中的条目确实被注释掉并且未被激活。
答案1
该cron
守护进程从多个文件中获取 crontab。
目录/etc/cron.d
和文件/etc/crontab
很特殊,它们可以手动编辑,并且守护进程将始终自动看到新版本。此外,这些是唯一也具有用户名字段的 crontab 文件。
/var/spool/cron/crontabs
cron 守护进程不会自动重新读取单个用户的 crontab(通常在 中)。您应该使用 command 来编辑它们crontab -e
,或者在每次更改后重新启动 cron 守护进程。
因此,对于您的情况,我建议您首先重新启动 cron 守护进程。您还可以向脚本添加一些调试输出,trial_bak.sh
例如运行pstree -p
.
答案2
您显示的行是从 的输出中提取的crontab -l
还是来自名为 的文件crontab
?
正在运行的 crontab 通常位于 /var/spool 下的目录中。此位置可能会有所不同。实际的 crontab 通常根据它们应用的用户 ID 来命名。
通常将 crontab 提取到文件中以便对其进行编辑。但是,除非使用命令重新加载,否则crontab crontab
原始 crontab 条目将继续运行。