我确实确认 - 我的 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)
我的 crontab
grep -R /var/spool/ -e 重载
/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
但这不是为什么会发生这种情况的答案......
系统 - gentoo
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
编辑:
我确实注意到,其中一个 cron 进程报告 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
第二个进程报告正确(服务器正常运行时间约为 40 分钟 - 我最近确实重新启动了它)
一个重要信息 - 它是在主机上运行的 V-server。
无论我做什么(/etc/init.d/vixie-cron restart)它都以相同的 PID 开始
已解决:
我找到了原因。
一个 V-server 运行了两次,使用不同的上下文。
可能的解释 - 有人在机器运行时更改了上下文,因此并非所有进程都被杀死,还有什么 - 他们确实影响了 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
我已经 TERM 旧流程,问题已解决。