/ etc / crontabの形式を検証する方法はありますか?


35

タスクがどのユーザーとして実行されているかに関係なく、スケジュールされたタスクを/ etc / crontabに固定して、実行予定が一目でわかるようにします。

唯一の落とし穴は、crontab -eとは異なり、保存時に形式が検証されないことです。そのため、浮遊文字がcron全体を静かに破壊する可能性があります。

保存の前後に/ etc / crontab形式を検証する方法はありますか?


4
私のように、あなたがあなたのcronエントリー権を得たいかどうかを伝えるために、単純な(非スクリプト化)方法を探してここに来た、あなたがに興味があるかもしれない、場合cronchecker.net -それは、人間とのcronエントリのためのオンラインバリデータですフレンドリーな出力。
マットギブソン14

回答:


17

私が見つけた唯一の信頼できる方法は、ログをチェックすることです。

cron/etc/crontab毎分チェックし、リロードしたこと、またはエラーを検出したことを示すメッセージを記録します。

編集後、これを実行します:

sleep 60; grep crontab /var/log/syslog | tail

または、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)

これはDebian 8にあります。他のシステムでは、cronは別のファイルに記録する場合があります。

(systemdを使用することで適切なログファイルを探し回るのを避けることができると考えましたjournalctl -u cronが、これらのログエントリは表示されず、実際には何らかの理由でcronイベントのロギングを停止したようです)


FreeBSD 10.3でテスト済み。作品の魅力のように、ただでは/ var / log / cronのログ・パスを交換
Jette



3

ここでこのクールなソリューションを見つけました:https : //crontab.guru

crontabを検証するだけでなく、crontabをいつ何時に実行するかを明示的に示し、エラーの場所を強調表示します。


0

Ubuntuでは、私はちょうど実行できるようです:

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 16

@conradkコマンドはcronjobを開始せず、指定されたファイルでユーザーの既存のcrontabファイルを上書きします。
MadHatterは、モニカをサポートします

これは、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.