20일마다 작업을 실행하는 더 쉬운 방법이 있는지 궁금합니다. cron 작업에서 day 매개변수를 지정하면 */20
매월 20일에만 실행됩니다. IE는 기본적으로 한 달에 한 번 실행됩니다.
비결은 다음과 같습니다.25분마다 CronJob 실행몇 분 동안 작동하지만 매일 크론 작업을 실행하여 확인하지 않으면 하루에 적용되지 않을까 걱정됩니다.
이것이 나의 최후의 수단이 될 것이지만, 이 작업을 수행하는 더 나은/더 현명한 방법이 있는지 알고 싶습니다.
추가 정보
이는 업데이트 목적이므로 20일 이내에 완료될 수 있습니다. 하지만 저는 대부분의 시간을 잠자기 상태로 유지하는 노트북에서 작업을 하고 있습니다. 따라서 보장된 실행은 필수입니다(cron에는 이것이 부족하다고 읽었습니다).
답변1
20일마다 스크립트를 실행하는 유일한 방법은 매일 실행 cron
하고 스크립트를 체크인하는 것입니다(연초 이후의 일수가 요구 사항을 확인하는 경우). 다음과 같은 작업이 수행됩니다.
if [ $( expr $(date +%j) % 20) -ne 0 ]
then exit # days do not divide to 20 w/o remainder
fi
#your script here
답변2
이것이 내가 문제를 해결한 방법이다
cron
매일 스크립트를 호출하세요- 스크립트 상단 근처의 상태 파일을 확인하여 20일 이상 전에 마지막으로 실행되었는지 확인하세요.
- 그렇지 않으면 종료
- 현재 날짜/시간을 반영하도록 스크립트 끝의 상태 파일을 업데이트합니다.
스크립트가 시작될 때 날짜/시간을 캡처하지만 스크립트가 성공적으로 종료되려고 할 때만 기록하는 등 몇 가지 향상된 기능도 있습니다. 이는 장기 실행 프로세스의 경우 특히 중요하지만 실행하는 데 잠시만 걸리는 프로세스의 경우에는 중요하지 않습니다.
"$HOME/${0##*/}.lastran"
나는 마지막 실행의 상태 파일(예 : 쓰기 )을 사용하는 경향이 있지만 date
내용보다는 파일 수정 날짜/시간에 의존합니다. find "$stateFile" -mtime +19
파일이 충분히 오래된 경우 비어 있지 않은 값이 반환됩니다.