나는 매일 정확히 13시에 실행되어야 하는 AIX 서버에서 ksh 쉘 스크립트를 개발 중입니다. CRONTAB, AT, WATCH, inotify, date -d 등을 사용할 권한이 없습니다. 유일한 옵션은 스크립트를 계속 반복하고 백그라운드에서 실행하는 것입니다.
while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done
while
위의 코드를 시도했지만 조건이 true가 될 때까지 백그라운드에서 계속 실행되는 것을 원하지 않습니다 . 다른 방법 sleep
이나 while
루프 또는 지속적으로 실행되는 대신 한 번만 실행되는 방법을 사용하도록 제안하십시오.
답변1
나는 그것을 에서만 수행했고 perl
그것을 사용하지 않았지만 ksh
왜 그것이 가능하지 않아야 하는지는 알 수 없지만 내가 한 일은 일종의 다음과 같습니다(아마 어떤 언어에서도 유효한 코드가 아닐 것입니다).
while(true)
starttime=`date +%s`
actions
sleep starttime+24*60*60-`date +%s`
end
이렇게 하면 작업이 24시간마다 시작됩니다. 내 생각은 13시에 실행되도록 하고 시작 부분에 13시를 기다리는 루프를 추가하는 것입니다. 생각해보면 starttime+24*60*60
비슷한 것으로 교체하는 것이 나을 것 같습니다 date -d "13:00 tomorrow" +%s
.