如果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结束
...
那会发生什么?或者仅在第一次测试工作完成后才调用第二个测试?
答案 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