금요일 오후 5시부터 월요일 오전 5시에 끝나는 crontab 스크립트를 매시간 실행하고 싶습니다.
스크립트는 해당 주 동안 완료되었는지, 현재 실행 중인지 확인합니다. 아니요/아니요인 경우 작업을 시작합니다.
머리로는 다음과 같은 일을 할 수 있다는 것을 알고 있습니다.
#Mins Hours DoMonth Months DoWeek
0 5-17 * * 0,6 /bin/echo "Run Script Sat and Sun Days"
0 17-24 * * 0,5,6 /bin/echo "Run Script Fri, Sat, Sun Nights"
0 0-5 * * 6,0,1 /bin/echo "Run Script Sat, Sun, Mon Mornings"
내가 생각할 수 있는 모든 방법은 세 부분(금요일 밤, 토요일/일요일 종일, 월요일 아침)과 관련됩니다.
이를 수행하는 더 효율적인 방법이 있습니까? 해당 시간 내에 매시간 이 작업을 수행할 수 있는 단일/이중 회선이 있습니까?
아니면 단순히 이 기간 내에 스크립트를 확인하는 것이 더 쉬울까요(그리고 해당 기간 내에 있지 않은 경우 종료)?
답변1
스크립트가 현재 실행 중인지 확인하고 그렇지 않은 경우 매시간 실행하려면 다음을 수행할 수 있습니다.
pgrep -x script-name.sh || script-name.sh
그러나 스크립트에 고유한 이름을 사용하지 않는 한 이 작업을 수행하고 싶지 않을 것입니다. 위의 예에서처럼 "echo"와 함께 사용하지 마십시오.