*/5 * * * * my command

这项工作,但每5分钟就得到执行的两次,为什么?

/var/log/cron 它显示:

Jun 16 22:20:01 Test CROND[12512]: (root) CMD (my command)
Jun 16 22:20:01 Test CROND[12516]: (root) CMD (my command)

所以它不是从两个用户。

它只是进入了一次 crontab -e -u root.该命令是php命令。

有帮助吗?

解决方案

什么都没有说明使人们有理由为它执行的两倍。看看其他地方。

  • 做两个用户的电话吗?
  • 是它进入的两倍?
  • 不叫?
  • 它设置在行动条件的重复?

如果它是一个壳脚本执行,它追加 whoamidate 日志的文件。你应当能够挖掘的理由。

更新

类型ps-A,确保crond没有运行两次。

其他提示

crontab中的wget通常限制为15分钟。在我们的情况下,情况就是如此,在这15分钟之后,作业最终会超时,然后立即重新运行。因此,解决方法是在crontab中设置cronjob,如下所示:

1 2 * * * root wget --read-timeout=3600 -O - 'http://cron-job-url' >/dev/null 2>&1

...而不是

 1 2 * * * root wget -O - 'http://cron-job-url' >/dev/null 2>&1

所以,wget就是这样。含义3600 = 1小时。或者更多,如果你需要!

如果它是您安装的应用程序的命令,可能已经将相同的条目添加到 / etc / crontab /etc/cron.d/<something>

我做了确认-我cron也运行两次...

Jul 24 14:40:01 localhost cron[2713]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[9481]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:41:01 localhost cron[10724]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20380]: (root) CMD (/etc/apache2/generator/reloader.do)
Jul 24 14:42:01 localhost cron[20832]: (root) CMD (/etc/apache2/generator/reloader.do)

我务

查询-R/var/卷轴/-e reloader

/var/spool/cron/crontabs/root:* * * * * /etc/apache2/generator/reloader.do

输出:

whoami
date
------

输出:

root
root
Tue Jul 24 14:46:02 CEST 2012
---------
Tue Jul 24 14:46:03 CEST 2012
---------

我目前的解决方法是:

if [ -f /etc/apache2/generator/reloader.lock ]
then
exit
fi
touch /etc/apache2/generator/reloader.lock
/etc/apache2/generator/reloader
rm /etc/apache2/generator/reloader.lock

但这不是答案为什么这就是发生...

系统的巴布亚 Cron-vixie-cron

部分的 ps aux wwf 输出(共进午餐的内部cron任务)

root     10843  0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root     29797  0.0  0.0  25020   964 ?        S    15:08   0:00  \_ /usr/sbin/cron
root     29799  0.0  0.0   9188  1228 ?        Ss   15:08   0:00      \_ /bin/bash /etc/apache2/generator/reloader
root     29822  0.0  0.0  14800   988 ?        R    15:08   0:00          \_ ps aux wwf
------
root      8215  0.0  0.0  16480   836 ?        Ss   14:23   0:00 /usr/sbin/cron
root     31419  0.0  0.0  25020   968 ?        S    15:08   0:00  \_ /usr/sbin/cron
root     31423  0.0  0.0   9188  1228 ?        Ss   15:08   0:00      \_ /bin/bash /etc/apache2/generator/reloader
root     31431  0.0  0.0  14804  1004 ?        R    15:08   0:00          \_ ps aux wwf

编辑:

我也注意到,这一计划过程的报告Jun06作为开始日期(今天是Jun24)

root     10843  0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root      8215  0.0  0.0  16480   836 ?        Ss   14:23   0:00 /usr/sbin/cron

第二个进程的报告正确地(服务器uprime是-40分钟-我有没有重新启动它免得) 一个重要的信息-这是V-服务器上运行的主机。

无论我做什么(/etc/init。d/vixie-cron重新启动)它开始的同PID

解决:

我已经找到了理由。一个V-服务器运行两次不同的上下文。可能的解释的-有人已经改变的环境,同时机是运行,其结果是,不是所有的进程被打死,什么;s更多-他们有没有影响的新实例vserver(下文303和3031):

root     10843  3031 developer      0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron
root     16509   303 developer      0.0  0.0  16480   836 ?        Ss   15:18   0:00 /usr/sbin/cron

我期的进程,并解决了问题。

可以肯定的是,它不是导致它运行两次的crontab条目。找出正在发生的事情的最快方法是在cron作业脚本中添加一些调试。如果你什么都不做,那么默认情况下cron输出将被邮寄到 root @ localhost (除非你把它配置为不同),所以假设你有root访问权限,那么在脚本中添加一些调试信息,例如:

echo "Script starting"
date
whoami

并查看输出。这将让你开始弄清楚这是如何被调用两次。

我遇到了同样的问题,在我的情况下,我错误地初始化了两次cron服务。在我停止了cron #/ etc / init.d / crond stop 并再次启动#/ etc / init.d / crond start 之后,它运行得很好。

我希望这可以帮助任何人。

看起来你有两个crond正在运行,一个用PID 12512,另一个用PID 12516。

我使用OpenWrt。

我有同样的问题,但我只有一个cron: ps | grep crond:

31447 root      1508 S    /usr/sbin/crond -c /etc/crontabs -l 8 
31454 root      1500 S    sh -c ps | grep crond 
31456 root      1496 S    grep crond

logread | grep cron

May 27 13:15:01 decibox cron.info crond[31447]: crond: USER root pid 1594 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2103 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2325 cmd /root/check_connect.php.sh 
May 27 13:25:01 decibox cron.info crond[31447]: crond: USER root pid 2880 cmd /root/check_connect.php.sh

由于conf文件中的双重输入,我遇到了同样的问题:

# grep /syslog /etc/rsyslog.conf /etc/rsyslog.d/50-default.conf 
/etc/rsyslog.conf:*.*;auth,authpriv,kern,mail.none      -/var/log/syslog
/etc/rsyslog.d/50-default.conf:*.*;auth,authpriv,kern,mail.none -/var/log/syslog

清楚地评论其中一个解决问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top