몇 가지 작업을 시간 단위로 실행하고 싶지만 반드시 동시에 수행할 필요는 없을 것 같습니다.
0 * * * * job
매시간 0분에 정시에 실행된다는 의미입니다.
나도 사용할 수 있다는 걸 알아
@hourly job
있다면 어떤 차이가 있나요? 작업이 매시간 실행되지만 동시에 실행되지 않도록 예약하려면 어떻게 해야 합니까?
답변1
~에서crontab(5)
:
@hourly
: 매시간 실행됩니다."0 * * * *"
.
그래서 그것은 똑같습니다.
한 시간의 여러 시점에 작업(또는 로드를 분산하기 위한 여러 작업)을 실행하려면 작업을 시작하기 전에 임의의 시간 동안 잠을 자면 됩니다.
@hourly sleep $((RANDOM / 10)); dowhatever
최대 3276초(거의 1시간) 동안 대기한 후 작업을 실행합니다. 따라서 작업을 시작할 때마다 cron
실제로 시작하기 전에 기다리는 시간이 다릅니다.
답변2
@hourly
0 * * * *
in 의 동의어이며 crontab
차이가 없습니다. @hourly
의 특수 문자열 표현입니다 0 * * * *
.
에서 man 5 crontab
:
string meaning
------ -------
@hourly Run once an hour, "0 * * * *".
cron
내 Vixie Cron은 총 8개의 특수 문자열을 지원한다는 점에 유의해야 합니다.
답변3
Jenkins Cron/주기적 빌드 접근 방식을 공유하고 싶었습니다. H(해시)가 옵션인 일반 Cron에서 이와 같은 것을 보면 좋을 것입니다.
Examples:
# every fifteen minutes (perhaps at :07, :22, :37, :52)
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
답변4
다음을 사용하여 시간 경계를 명시적으로 제한할 수도 있습니다.모듈로 연산자.
시작 시간을 최대 10분(600초)으로 제한하려면 다음을 수행하십시오.
$RANDOM % 600
0에서 600 사이의 결과를 생성합니다.@hourly sleep $(( $RANDOM % 600 )) && /path/to/your/script
어쨌든 실행될 것이기
&&
때문에 여기서 사용됩니다 .sleep