我有一个似乎每分钟运行一次以上的cron作业,不知道考虑到Linux只能在一定时间间隔内处理这种情况。以下是我研究它的方法。
首先,我确认/etc/cron.hourly,/etc/cron.daily等没有任何其他条目......没有什么不寻常的。
然后,我进入/ etc / crontab以确保没有其他条目,没有任何条目。
然后,我运行此命令以查看所有用户的crontabs
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
......没有任何东西,然而,根没有出现,但也许这是预期的
最后,我点击crontab -l
我得到的只是预期的一个条目:
* * * * * wget --no-check-certificate -q -O - https://...cron_custom_alerts.php
基于以上所述,我假设确实只配置了一个cron作业。但是,我将日志记录添加到正在运行的脚本中,我看到每分钟执行多次。我输出$ _SERVER ['PHP_SELF']和$ _SERVER ['REMOTE_ADDR]',以防cron在外部执行。但是,日志不显示任何远程IP,并且除了我怀疑它多次运行之外没有提供任何线索。
2012-05-02 21:57:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:57:47 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:57:53 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:48 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:58:54 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:01 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:47 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 21:59:53 - /cron_custom_alerts.php EXECUTED BY
2012-05-02 22:00:01 - /cron_custom_alerts.php EXECUTED BY
看起来它们分三批运行。当我进入crontab并注释掉一个条目时,它将其归结为两个!显然,在某个地方调用此脚本还有两个隐藏的工作,但是通过crontab -e
无法看到它
如果我可以通过PHP进行更多的日志记录,我会对此持开放态度,但我确实能够调查触发此脚本执行的内容。
解答:访问日志表明脚本是从外部访问的,而不是由任何内部cron作业访问的。其他服务器被阻止通过htaccess deny执行cron。
答案 0 :(得分:0)
cron通常是一个编写良好的软件,不会做这些深奥的事情。如果它会,你不会是唯一遇到它的人。至少以root身份,您可以看到系统上的所有crontab条目。
禁用cronjob并查看它是否仍然执行。如果是,请使用您的网络服务器的访问日志跟踪这些HTTP请求的来源(特别是当它们每分钟发生时)。阻止这些请求。