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

PHP cron脚本每分钟触发一次以上,php,linux,cron,Php,Linux,Cron,我有一个cron作业,似乎每分钟运行不止一次,考虑到linux只在几分钟内处理,我不确定这是怎么可能的。我是这样研究的 首先,我确认/etc/cron.hourly、/etc/cron.daily等中没有任何其他条目。。。没有什么不寻常的 然后,我进入/etc/crontab以确保没有其他条目,没有任何内容 然后,我运行这个命令来查看所有用户的crontab 用户的(cut-f1-d:/etc/passwd);做回显$user;crontab-u$user-l;完成 。。。然而,那里什么都没有,

我有一个cron作业,似乎每分钟运行不止一次,考虑到linux只在几分钟内处理,我不确定这是怎么可能的。我是这样研究的

首先,我确认/etc/cron.hourly、/etc/cron.daily等中没有任何其他条目。。。没有什么不寻常的

然后,我进入/etc/crontab以确保没有其他条目,没有任何内容

然后,我运行这个命令来查看所有用户的crontab

用户的
(cut-f1-d:/etc/passwd);做回显$user;crontab-u$user-l;完成

。。。然而,那里什么都没有,根没有出现,但这也许是意料之中的

最后,我点击了
crontab-l

我得到的只是一个预期的条目:

***wget--无支票证书-q-O-https://...cron_custom_alerts.php

基于上述情况,我假设实际上只配置了一个cron作业。但是,我在正在运行的脚本中添加了日志记录,每分钟可以看到多个执行。我同时输出$_服务器['PHP_SELF']和$_服务器['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。

cron通常是一个编写良好的软件,不会做这种深奥的事情。如果会的话,你不会是唯一一个经历它的人。至少作为root用户,您能够看到系统上的所有crontab条目


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

strace
附加到
cron
守护进程并尝试捕获它。您是
sudo
还是以root用户身份运行所有用户的crontab列表?除非您是root用户,否则无法查看其他用户的crontab。PHP脚本在做什么?PHP可以在一个被多次调用的函数中写入日志吗?非常奇怪的是,脚本是通过http请求在Web服务器环境中执行的,而$\u服务器变量是空的。事实上…你拼错了。它是$而不是$s,尽管我不认为你会从这些值中学到很多东西?可能是
wget
正在跟踪该链接。看起来它们是分三批运行的。当我进入crontab并注释掉其中的一个条目时,它将其减少到了两个!显然,还有另外两个隐藏的作业在调用这个脚本,但是通过
crontab-e