我们有一个在 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