为什么即使我删除了 crontab 行,cron 仍会执行?

为什么即使我删除了 crontab 行,cron 仍会执行?

我有一个 cron,用于每分钟检查是否有待发送的邮件:

*/1 * * * * /usr/bin/curl http://localhost/path/application.php >> /var/log/application.log

这个脚本已经运行多年了,没有出现任何问题。昨天我echo在文件的第一行添加了一个application.php,并得到了以下日志:

10:34:05 Launching application...
10:34:17 Launching application...
10:34:44 Launching application...
10:35:07 Launching application...
10:35:18 Launching application...
10:35:43 Launching application...
10:35:58 Launching application...
....

是的,该脚本每分钟启动3/4次。

我的根 crontab 只包含上述行,而我使用的唯一用户的 crontab 为空。没有其他计算机可以访问我的localhost服务器(我已仔细检查过它是否已隔离)。

为了检查问题是否出在 root cron 上,我注释掉了唯一的 crontab 行,结果,惊喜!生成了类似的日志。

所以问题是:发生了什么事? 是否有任何 cron 日志或类似内容?

答案1

我几乎确信你需要的是

/etc/init.d/cron reload

答案2

您需要进一步查看,在许多系统上,cron 条目“隐藏”在 /etc/cron.d 目录下。

您也需要检查这些。

答案3

有几个地方可以列出 cron 条目。你可以输入以下命令来搜索它:

grep "application.php" /var/spool/cron/crontabs/* /etc/crontab /etc/cron.*/*

这必须以 root 权限运行,因此sudo如果您使用的是 Ubuntu 或类似系统,请在其前面加上前缀。

cron 日志记录由 Syslog 控制。(除非您恰好拥有 syslog-ng,它有稍微不同的控制方式,)您可能再次知道grepcron 的记录位置。

grep -i 'cron' /etc/*syslog.*/* /etc/*syslog.*

/var/log/cron.log是最明显的选择。

希望这能帮助您前进。

相关内容