/ 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.