하루 2~3회, 24시간 동안 매번 다른 시간에 스크립트를 실행할 수 있기를 원합니다.
무엇을 추천하나요간단하고 신뢰할 수 있음해결책?
답변1
하루에 2번 스크립트를 실행합니다.
0 0,12 * * * sleep $(( $$ \% 21600 )); /path/to/script.sh
이렇게 하면 정오와 자정에 작업이 시작된 다음 스크립트를 시작하기 전에 최대 6시간(12시간 간격의 절반) 동안 절전 모드로 전환됩니다.
하루에 3번 스크립트를 실행합니다.
0 0,8,16 * * * sleep $(( $$ \% 14400 )); /path/to/script.sh
그러면 자정, 오전 8시, 오후 4시에 작업이 시작되고 스크립트를 시작하기 전에 최대 4시간(8시간 간격의 절반) 동안 대기합니다.
Ubuntu로 태그를 지정했으므로 기본 /bin/sh로 bash가 있을 수 있습니다. 이는 $RANDOM을 설명하는 것으로 보입니다(RANDOM은 POSIX가 지정되지 않았지만). 따라서 예측 불가능성을 높이기 위해 Zwans의 답변을 다음으로 바꾸십시오.
하루에 2번 실행:
0 0,12 * * * sleep $(( RANDOM \% 21600 )); /path/to/script.sh
하루에 3번 실행:
0 0,8,16 * * * sleep $(( RANDOM \% 14400 )); /path/to/script.sh
나는 이것을 로 바꾸겠습니다 &&
. ;
이는 "수면 명령이 성공적으로 종료될 때까지 기다립니다"에서 "일정 시간 동안 잠자고, 잠자기 완료 또는 종료 여부에 관계없이 잠자기"로 의미를 변경합니다. 또한 참고하시기 바랍니다%
탈출해야 해cron 명령의 일부인 경우, 그렇지 않은 경우 개행 문자로 해석됩니다.
답변2
0 */12 * * * sleep $((RANDOM%x)) && /bin/sh -c /path/to/script.sh
지연 시간은 0에서 사이이므로 x
해당 값을 직접 설정하세요. 이는 임의 지연을 포함하여 12시간마다 실행되어야 합니다.
를 사용하여 실행되는지 확인하세요 bash
.