2

如果 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 结束

……

那会发生吗?还是只有在第一个测试工作完成后才调用第二个测试?

4

1 回答 1

3

是的,这就是将要发生的事情,无论该进程的执行时间如何,您的 cron 都会每分钟运行一次该进程。如果您想避免并发,请在您的进程中使用信号量系统 ( http://en.wikipedia.org/wiki/Semaphore_%28programming%29 )。一个简单的实现将包括进程检查信号量文件、检查该文件的最后修改时间或检查该文件中包含的 PID 是否仍在运行,从而决定您的进程是应该运行还是直接退出。更好的实现(如果您不关心与操作系统无关)将使用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
于 2013-03-20T12:51:02.357 回答