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.