Cron推迟了,然后我完成了任务

时间:2016-09-26 10:57:43

标签: linux cron debian crontab

在我的debian服务器上,我已经通过我自己的perl脚本(serviceManager.pl)将myTask分解为每分钟。

# crontab -e

* * * * * $SCRIPTS_PATH/serviceManager.pl MyTask 

问题有时是与cron中记录的同时未启动的任务。

任务延迟,然后以相同的任务运行paraller。 这会导致我的脚本报告错误,因为正在运行另一个具有相同名称的任务。 我正在使用自己的锁定(出于记录的原因)但是锁定是被破坏的,因为在任务被锁定之前执行第二个任务。

# This is my own interpretation of issue based on data from syslog and serviceManager (my script) log :

07:13:01 - CRON in syslog : launching MyTask  - correct launched task.
07:13:02 - serviceManager log : starting MyTask
07:13:03 - serviceManager log : finishing MyTask
07:14:01 - CRON in syslog : launching MyTask
---- nothing between in both logs ----
07:15:01 - CRON in syslog : launching MyTask
07:15:27 serviceManager log : 4552] STARTING: [MyTask]
07:15:27 serviceManager log : 4552] ERROR     [MyTask] : 'serviceManager.pl MyTask' is running with PID 4391
07:15:27 serviceManager log : 4391] STARTING: [MyTask]
07:15:27 serviceManager log : 4391] IS LOCKED:[MyTask]

我看到syslog中还有另一个cron日志条目, 类似的东西:

Sep 24 07:13:22 myserver crontab[4294]: (myuser) LIST (myuser)

在07:14:01和07:15:01之间没有'crontab'条目。 这可能是导致错误的原因吗?

像你的perl脚本之前'调用系统命令锁文件'这样的答案是不相关的。 我想知道cron有什么问题。

此行为不仅存在于我的某个服务器中。 服务器没有克隆,但有相同版本的debian(和cron包)

如果你有这种cron问题的经验,我很感激任何建议。

# syslog :

Sep 24 07:13:01 myserver CRON[4155]: (myuser) CMD ($SCRIPTS_PATH/serviceManager.pl MyTask)
Sep 24 07:13:12 myserver crontab[4266]: (myuser) LIST (myuser)
Sep 24 07:13:13 myserver crontab[4269]: (myuser) LIST (myuser)
Sep 24 07:13:22 myserver crontab[4293]: (myuser) LIST (myuser)
Sep 24 07:13:22 myserver crontab[4294]: (myuser) LIST (myuser)

Sep 24 07:14:01 myserver CRON[4391]: (myuser) CMD ($SCRIPTS_PATH/serviceManager.pl MyTask)
Sep 24 07:15:01 myserver CRON[4552]: (myuser) CMD ($SCRIPTS_PATH/serviceManager.pl MyTask)
Sep 24 07:15:18 myserver crontab[4836]: (myuser) LIST (myuser)


# serviceManager log :

[2016/09/24 07:13:02 | 4155] STARTING: [MyTask]
[2016/09/24 07:13:03 | 4155] FINISHING:[MyTask]
[2016/09/24 07:15:27 | 4552] STARTING: [MyTask]
[2016/09/24 07:15:27 | 4552] ERROR     [MyTask] : 'serviceManager.pl MyTask' is running with PID 4391
[2016/09/24 07:15:27 | 4391] STARTING: [MyTask]
[2016/09/24 07:15:27 | 4391] IS LOCKED:[MyTask]

系统信息:

cron version : 3.0pl1-127+deb8u1 / amd64

  Operating System: Debian GNU/Linux 8.5 (jessie)
            Kernel: Linux 3.2.0-4-amd64
      Architecture: x86-64

0 个答案:

没有答案