crontab 요일 대 요일?


14

나는 몇 가지 다른 리눅스 및 freebsd 시스템에서 / etc / crontab에 이것을 추가했다 :

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

매월 3 일 화요일에 재부팅하고 싶습니다. 그러나 이달 3 일 수요일 (19 일)에 모든 시스템이 재부팅되었습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

업데이트 : 아래 Ranon의 답변 덕분에 아래 수정본이 작동하는 것처럼 보이며 누구나 확인할 수 있습니까? 아니면 더 나은 방법이 있습니까?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now

답변:


16

를보십시오 man 5 crontab.

참고 : 명령 실행 날짜는 월과 요일의 두 필드로 지정할 수 있습니다. 두 필드가 모두 제한되어있는 경우 (즉, *가 아닌 경우) 두 필드 중 하나가 현재 시간과 일치하면 명령이 실행됩니다. 예를 들어,``30 4 1,15 * 5 ''는 매월 1 일과 15 일 오전 4시 30 분과 매주 금요일에 명령이 실행되도록합니다. 그러나 명령에 테스트를 추가하여 원하는 결과를 얻을 수 있습니다 (아래 예 CRON FILE의 마지막 예 참조).

따라서 서버는 매일 15-21시와 화요일마다 다시 시작해야합니다.

맨 페이지의 예를 살펴보십시오.

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"

6
이것은 디자인 버그처럼 보입니다. 매일 15-21시와 매주 화요일에 원한다면 두 개의 별도 crontab 항목을 만들 것입니다. 별도의 테스트에 의존하는 것은 추악한 해킹입니다. 해결 방법을 제공해 주셔서 감사합니다.
— Laurence Gonsalves
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.