/ etc / crontab의 형식을 확인하는 방법이 있습니까?


35

나는 / etc / crontab에 예약 된 작업을 고수하여 작업이 실행되는 사용자에 관계없이 실행 예정된 내용을 한눈에 볼 수 있습니다.

유일한 단점은 crontab -e와 달리 저장시 형식이 유효성 검사되지 않으므로 길 잃은 문자가 전체 cron을 조용히 중단 할 수 있다는 것입니다.

저장 전후에 / etc / crontab 형식의 유효성을 검사하는 방법이 있습니까?


4
경우, 나처럼, 당신은 당신이 당신의 cron 항목의 권리를 가지고 것인지를 알려하는 간단한 (비 스크립트) 방법을 찾고 여기 온, 당신은에 관심이있을 수 cronchecker.net - 그것은 크론 항목에 대한 온라인 Validator의 인간 -로 친절한 산출.
Matt Gibson

답변:


16

내가 찾은 신뢰할 수있는 유일한 방법은 로그를 확인하는 것입니다.

cron/etc/crontab1 분마다 확인 하고 다시로드했거나 오류를 발견했음을 나타내는 메시지를 기록합니다.

따라서 편집 후 다음을 실행하십시오.

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 이벤트 로깅을 중지 한 것 같습니다)


FreeBSD 10.3에서 테스트되었습니다. 매력처럼 작동합니다. 로그 경로를 / var / log / cron
Jette



3

나는이 멋진 해결책을 여기에서 발견했다 : https://crontab.guru

crontab의 유효성을 검사 할뿐만 아니라 crontab의 실행시기와시기를 명시 적으로 알려주고 오류가있는 위치를 강조 표시합니다.


0

우분투에서는 그냥 실행할 수있는 것처럼 보입니다.

crontab path/to/crontab/file

참고 :이 cronjob을 시작하면 부작용이 있습니다 (@NZD 덕분에)

파일이 유효하지 않으면 다음과 같은 오류가 발생합니다.

"crontab":11: bad minute
errors in crontab file, can't install.

1
이 명령은 crontab 파일을 확인하지만 동시에 파일을 설치합니다 (오류가없는 경우). 이것은 아마도 OP에 대한 원치 않는 부작용 일 것입니다.
NZD

@NZD에게 감사의 말씀을 전하며 OP가이를인지 할 수 있도록 답장에 추가했습니다.
conradkdotcom

@conradk 명령은 cronjob을 시작하지 않고 사용자의 기존 crontab 파일을 제공된 파일로 덮어 씁니다.
MadHatter는 Monica

이것은 crontab의 모든 가능한 문제에 실제로 작동하지는 않습니다. 그것은 눈부신 문제를 잡을 것이지만, 예를 들어 이것을 잡지 않습니다 : * 4/0 * * /bin/myscript.sh - 4/0유효하지 않습니다. 그러나이 방법에 사로 잡히지 않습니다
JDS

@JDS 단계 값이 아닙니까? 단계 값이 0금지되어 있습니까? unix.stackexchange.com/questions/32027/…
conradkdotcom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.