这个 cronjob 在哪里运行?

这个 cronjob 在哪里运行?

我们有一个在 CentOS 6.5 机器上运行的新闻服务器。它是叶节点,并且 cron 设置为每两分钟运行一次。我们决定关闭它以解决其他问题,因此我们注释掉 crontab 中的行:

# */2 * * * * /usr/sbin/fetchnews

然而,出于某种原因,我们仍在更新新闻文章。因此我们决定更改该二进制文件的权限。

chmod 400 /usr/sbin/fetchnews

然后,我们开始每两分钟收到一封电子邮件:“/usr/sbin/fetchnews:权限被拒绝”。

我们查看 /etc/cron/hourly,实际上是 /etc 中与 crond 有关的所有内容。它不在 root 的 crontab 文件中,不在新闻用户的 crontab 文件中,也不在任何其他用户的 crontab 文件中。

我如何找出导致该二进制文件运行的原因?

谢谢。

答案1

尝试grep -ri fetchnews /etc/cron* /var/spool/cron/tabs/*

除了您注释掉的行之外,还有其他结果吗?

答案2

watch "ps -ef | grep fetchnews"

ps -ef | grep fetchnews将显示每两秒的输出。在 的输出中ps -ef,父 pid 是第三个字段,在本例中为 1458:

ulmi      1462  1458  0 18:20 pts/1    00:00:00 sh -c ps -ef | grep ls

这就是催生你的 fetchnews 的工作,它可能会对你有所帮助。

(我的水晶球说,也许您尝试直接编辑 crontabs?只有运行crontab -e才能保证crond拾取新选项卡。)

答案3

假设有一个用户拥有新闻文件,该用户的个人 crontab 条目中可能有一个 cron 条目负责此操作。用户 crons 在 RHEL 系统上维护:

$ sudo ls -l /var/spool/cron/
total 4
-rw-------. 1 slm slm 9 Oct  6 13:30 slm

如果您在那里看到条目,您可以使用它sudo来查看给定文件中的内容,如下所示:

$ sudo crontab -u slm -l
### blah

您可以简单地注释掉该文件中的条目,以crontab禁止它运行。如果您的工作相当简短,您也可以暂时禁用 cron 服务:

$ sudo service crond stop

相关内容