PHP cron脚本每分钟触发一次以上

时间:2012-05-03 02:03:26

标签: php linux cron

我有一个似乎每分钟运行一次以上的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。

1 个答案:

答案 0 :(得分:0)

cron通常是一个编写良好的软件,不会做这些深奥的事情。如果它会,你不会是唯一遇到它的人。至少以root身份,您可以看到系统上的所有crontab条目。

禁用cronjob并查看它是否仍然执行。如果是,请使用您的网络服务器的访问日志跟踪这些HTTP请求的来源(特别是当它们每分钟发生时)。阻止这些请求。