나는 / etc / crontab에 예약 된 작업을 고수하여 작업이 실행되는 사용자에 관계없이 실행 예정된 내용을 한눈에 볼 수 있습니다.
유일한 단점은 crontab -e와 달리 저장시 형식이 유효성 검사되지 않으므로 길 잃은 문자가 전체 cron을 조용히 중단 할 수 있다는 것입니다.
저장 전후에 / etc / crontab 형식의 유효성을 검사하는 방법이 있습니까?
나는 / etc / crontab에 예약 된 작업을 고수하여 작업이 실행되는 사용자에 관계없이 실행 예정된 내용을 한눈에 볼 수 있습니다.
유일한 단점은 crontab -e와 달리 저장시 형식이 유효성 검사되지 않으므로 길 잃은 문자가 전체 cron을 조용히 중단 할 수 있다는 것입니다.
저장 전후에 / etc / crontab 형식의 유효성을 검사하는 방법이 있습니까?
답변:
내가 찾은 신뢰할 수있는 유일한 방법은 로그를 확인하는 것입니다.
cron
/etc/crontab
1 분마다 확인 하고 다시로드했거나 오류를 발견했음을 나타내는 메시지를 기록합니다.
따라서 편집 후 다음을 실행하십시오.
sleep 60; grep crontab /var/log/syslog | tail
또는 1 분을 기다리지 않고 다음 1 분 + 5 초까지만 기다립니다.
sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail
오류가있는 출력 예 :
Jan 9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan 9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)
좋은 결과 :
Jan 9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)
다른 시스템에서는 cron이 다른 파일에 기록 할 수 있습니다.
(나는 systemd 's를 사용하여 올바른 로그 파일을 찾는 것을 피할 수 있다고 생각 journalctl -u cron
했지만 이러한 로그 항목을 표시하지 않았으며 실제로 2 일 전에 어떤 이유로 든 cron 이벤트 로깅을 중지 한 것 같습니다)
나는이 멋진 해결책을 여기에서 발견했다 : https://crontab.guru
crontab의 유효성을 검사 할뿐만 아니라 crontab의 실행시기와시기를 명시 적으로 알려주고 오류가있는 위치를 강조 표시합니다.
우분투에서는 그냥 실행할 수있는 것처럼 보입니다.
crontab path/to/crontab/file
참고 :이 cronjob을 시작하면 부작용이 있습니다 (@NZD 덕분에)
파일이 유효하지 않으면 다음과 같은 오류가 발생합니다.
"crontab":11: bad minute
errors in crontab file, can't install.
* 4/0 * * /bin/myscript.sh
- 4/0
유효하지 않습니다. 그러나이 방법에 사로 잡히지 않습니다
0
금지되어 있습니까? unix.stackexchange.com/questions/32027/…