@hourly vs 0 * * * * - Cron - 매 시간마다 다른 시간에 작업을 실행하는 방법

@hourly vs 0 * * * * - Cron - 매 시간마다 다른 시간에 작업을 실행하는 방법

몇 가지 작업을 시간 단위로 실행하고 싶지만 반드시 동시에 수행할 필요는 없을 것 같습니다.

0 * * * * job 

매시간 0분에 정시에 실행된다는 의미입니다.

나도 사용할 수 있다는 걸 알아

@hourly job

있다면 어떤 차이가 있나요? 작업이 매시간 실행되지만 동시에 실행되지 않도록 예약하려면 어떻게 해야 합니까?

답변1

~에서crontab(5):

@hourly: 매시간 실행됩니다. "0 * * * *".

그래서 그것은 똑같습니다.

한 시간의 여러 시점에 작업(또는 로드를 분산하기 위한 여러 작업)을 실행하려면 작업을 시작하기 전에 임의의 시간 동안 잠을 자면 됩니다.

@hourly sleep $((RANDOM / 10)); dowhatever

최대 3276초(거의 1시간) 동안 대기한 후 작업을 실행합니다. 따라서 작업을 시작할 때마다 cron실제로 시작하기 전에 기다리는 시간이 다릅니다.

답변2

@hourly0 * * * *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 % 6000에서 600 사이의 결과를 생성합니다.

@hourly sleep $(( $RANDOM % 600 )) && /path/to/your/script

어쨌든 실행될 것이기 &&때문에 여기서 사용됩니다 .sleep

관련 정보