저는 800개의 루프에서 두 개의 crontab 스크립트가 5초에 걸쳐 새로운 crontab을 생성하는 테스트 스크립트를 실행하고 있습니다.
예를 들어.
while [ "$counter" -lt 800 ]; do
crontab -r
create_crontab_1.sh >> cr_log.log
sleep 5;
create_crontab_2.sh>> cr_log.log
(( counter++ ))
done
지금
create_crontab_1.sh->
CRONLINE="*/2 * * * * /scratch/test1.sh >/dev/null 2>&1"
( crontab -l 2>/dev/null ; echo "${CRONLINE}" ) | 크론탭 -
create_crontab_2.sh->
crontab cron_file.txt
cron_file.txt ->
* * * * * 절전 2; /scratch/test3.sh >/dev/null 2>&1
* * * * * /scratch/test4.sh >/dev/null 2>&1;
/var/log/cron 로그:
crond[25583]: (사용자 이름) RELOAD (/var/spool/cron/)
CROND[29339]: (루트) CMD (sleep 3; /abc/test3.sh >/dev/null 2>&1)
CROND[29340 ] : (루트) CMD (sleep 2; /abc/test4.sh >/dev/null 2>&1)
crontab[29345]: (사용자 이름) LIST ()
CROND[29353]: (사용자 이름) CMD (/abc / test1.sh >/dev/null 2>&1)
crontab[29365]: (사용자 이름) REPLACE ()
test1.sh가 있는 crontab을 5초 만에 덮어썼는데도 test1.sh가 cron 로그에 나타나며 (2분마다 실행되도록 예약되어 있는데) 2분마다 호출되는 것으로 보이는 이유는 무엇입니까? 또한 CPU 클럭과 관련이 있습니까?
답변1
루프 내부의 명령을 살펴보고 순서를 조금 변경하면 반복되는 부분은 다음과 같습니다.
while ... do
create_crontab_2.sh >> cr_log.log
(( counter++ ))
crontab -r
create_crontab_1.sh >> cr_log.log
sleep 5;
done
create_crontab_2.sh
crontab
다음 작업을 수행하면 편집 작업이 취소됩니다 crontab -r
. create_crontab_1.sh
Sleep 중에는 crontab에 설정된 내용만 존재합니다. crontab에 대한 변경 사항은 빠르게 발생할 수 있으므로 거의 모든 규칙 집합을 cron
볼 수 없을 것입니다.create_crontab_2.sh