"인접한 크론 작업"이란 동일한 컨텍스트와 비슷한 시간에 실행되는 작업을 의미합니다. 예를 들어 현재 다음과 같은 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