무작위로 cron을 통해 스크립트를 실행하지만 하루에 특정 횟수만큼 실행합니다.

무작위로 cron을 통해 스크립트를 실행하지만 하루에 특정 횟수만큼 실행합니다.

하루 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.

관련 정보