如果cron计划是1分钟且cron运行时间是10分钟会发生什么?

时间:2013-03-20 11:36:12

标签: cron

如果cron时间表是每1分钟,但是cron时间的长度是10分钟,会发生什么?

cron:
- description: test for cron length of 10 min
  url: /test
  schedule: every 1 minutes

第一次测试在00:00:00调用,它将在00:10:00结束

第二次测试在00:01:00调用,它将在00:11:00结束

...

那会发生什么?或者仅在第一次测试工作完成后才调用第二个测试?

1 个答案:

答案 0 :(得分:3)

是的,即将发生的事情,无论该过程的执行时间如何,您的cron都会每分钟运行一次该过程。如果要避免并发,请在流程中使用信号量系统(http://en.wikipedia.org/wiki/Semaphore_%28programming%29)。一个简单的实现包括进程检查信号量文件,检查该文件的最后修改时间或检查该文件中包含的PID是否仍在运行,从而决定您的进程是应该运行还是只是退出。一个更好的实现(如果你不关心与os无关)将使用flock(1)获取文件锁定并在每次执行脚本时检查锁定:

    #!/bin/bash
    # Exit on unchecked errors (can't acquire exclusive lock)
    set -e

    (
    # Wait for lock on /var/lock/.script.xlock (file descriptor 200)
    flock -x 200

    # Your code

    ) 200>/var/lock/.script.xlock #Associate file descriptor 200 with file