인접한 cron 작업을 적시에 완료하기 위한 모범 사례가 있습니까?

인접한 cron 작업을 적시에 완료하기 위한 모범 사례가 있습니까?

"인접한 크론 작업"이란 동일한 컨텍스트와 비슷한 시간에 실행되는 작업을 의미합니다. 예를 들어 현재 다음과 같은 cron 작업이 있습니다.

0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp plugin update --all --allow-root; done
0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp core update --allow-root; done
0 0 * * * for dir in /var/www/html/*/; do cd "$dir" && /usr/local/bin/wp theme update --all --allow-root; done

보시다시피 그들은 상당히 "힘든" 작업을 수행했습니다. 그들은 여러 사이트의 모든 플러그인을 업데이트하고 핵심을 업로드한 다음 테마를 업로드했습니다.

첫 번째 작업에 1분, 두 번째 작업에 1분, 세 번째 작업에 1분을 할당했습니다.

내 경험상 모든 것을 처음 1분(0분)에 넣는 것은 문제가 되지 않습니다.작업을 시작하는 데 필요한 최소 시간, 그러나 작업과 관련된 각 프로세스는 시작할 수 있는 경우에만 시작되므로 일반적으로 이 작업을 수행하는 데 아무런 문제가 없을 것이라고 확신합니다.

어쨌든 내 질문은 이렇다.

인접한 cron 작업을 같은 날 같은 시간(0,1,2)의 이후 분으로 분할하거나 같은 날의 다른 시간으로 분할하는 모범 사례가 (적어도) 있습니까?

이 경우 내 작업 타이밍은 다음과 같습니다.

0 0 * * *
0 1 * * *
0 2 * * *

답변1

간단한 명령을 실행하는 것 이외의 경우에는 crontab에서 직접 수행하는 대신 복잡한 처리를 수행하도록 스크립트를 준비하십시오.

#!/bin/sh

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp plugin update --all --allow-root )
done

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp core update --allow-root )
done

for dir in /var/www/html/*/; do
    ( cd "$dir" && /usr/local/bin/wp theme update --all --allow-root )
done

심지어

#!/bin/sh

for dir in /var/www/html/*/; do
    ( cd "$dir" && {
        /usr/local/bin/wp plugin update --all --allow-root
        /usr/local/bin/wp core update --allow-root 
        /usr/local/bin/wp theme update --all --allow-root
      } )
done

관련 정보