cron がジョブを実行しない理由を調べるにはどうすればいいですか?

cron がジョブを実行しない理由を調べるにはどうすればいいですか?

私は Ubuntu 14.04 を使用しており、cron デーモンが実行されています:

# ps ax | grep cron
822 ?        Ss     0:00 cron

しかし、ジョブは実行されていません。以前は/var/log/syslog次のようなエントリを取得していました。

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

しかし、今では cron 関連のエントリはありません。また、次のようなエントリも取得していました/var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

しかし、今度は cron 関連のエントリはありません。

何かが変わったとは思いません。cron を再起動してみました:

# service cron restart
cron stop/waiting
cron start/running, process 24907

crontab -eを使用して cron ジョブを追加してみました* * * * * date >> /tmp/somefileが、 に新しい crontab がインストールされてしまいました。cron/var/spool/cron/crontabs/rootでは のファイルを使用したいと考えています/etc/crontab

使用できるデバッグ オプションはありますか、または調査できるエラー メッセージを表示するログがどこかにありますか?

答え1

ジョブの問題点をさらにデバッグするにはcron、メールを確認する必要があります。これは通常、/var/mail/<user_name>または のようなファイルに保存されます/var/spool/mail/<user_name>

これら 2 つのファイルは実際には私の Debian ボックス上のハードリンクですが、これが標準であるかどうかはわかりません。

説明

ページからcron(8):

コマンドを実行すると、出力は crontab の所有者 (または、crontab 内の MAILTO 環境変数で指定されたユーザー (存在する場合)) にメールで送信されます。

答え2

root 用の crontab がないことがわかりましたが、crontab エントリを持つユーザーはいますか? root のみを使用している場合は、次のディレクトリも確認できます: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.weekly

私のマシン (centos 6.4) では、/etc/cron.daily/ ディレクトリ内に mlocate.cron があり、cron はそのスクリプトを毎日実行します。

したがって、cron ジョブを追加するだけでよいと思います。

答え3

権限を/etc/crontab次のように変更することでこの問題を解決しました。

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

以前は でした-rw-rw-r--。それが唯一の変更点です。以前は機能していませんでしたが、今は機能します。まだ理由はわかりません。

答え4

私も同様の問題を抱えていましたが、 でユーザーとして root を指定した後/etc/crontab、cron ジョブがトリガーされ始めました。

これは、 に従う構文crontab -eが と異なることが原因である可能性があります/etc/crontab

関連情報