为什么这个被注释掉的 crontab 文件行会被执行?

为什么这个被注释掉的 crontab 文件行会被执行?

令我惊讶的是,我去年 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/crontabscron 守护进程不会自动重新读取单个用户的 crontab(通常在 中)。您应该使用 command 来编辑它们crontab -e,或者在每次更改后重新启动 cron 守护进程。

因此,对于您的情况,我建议您首先重新启动 cron 守护进程。您还可以向脚本添加一些调试输出,trial_bak.sh例如运行pstree -p.

答案2

您显示的行是从 的输出中提取的crontab -l还是来自名为 的文件crontab

正在运行的 crontab 通常位于 /var/spool 下的目录中。此位置可能会有所不同。实际的 crontab 通常根据它们应用的用户 ID 来命名。

通常将 crontab 提取到文件中以便对其进行编辑。但是,除非使用命令重新加载,否则crontab crontab原始 crontab 条目将继续运行。

相关内容