Crondの(CRON) bad commandエラーの対処法

cronを設定したはずなのに、動かない時の対処方法です。ログを確認する前にcronの状態とファイルパーミッションを確認します。

$ service crond status

crondがrunning状態であることを確認。

$ ls -la

また実行ファイル(シェルスクリプト)のパーミッションを確認して、ファイルの実行権限が正しく設定されているか確認します。

ここまで問題なければ、cronのログファイル(/var/log/cron)を確認します。

$ tail /var/log/cron

確認すると以下のようなbad commandエラーが出ていました。

crond[1668]: (CRON) bad command (/etc/cron.d/sample)

cronの実行エラーの原因・対処法

原因は、/etc/cron.d/sampleのファイル末尾に空行がなかったせいでした。

以下のようにファイル末尾には空の行を1つ入れないとbad commandとなってしまうようです。

0 3 * * * /backup/bin/mysql_dump.sh

これはcrontab -e コマンドを使わずに、以下のように直接ファイルを作成したことによるものでした。

$ echo "0 3 * * * /backup/bin/sample.sh" > /etc/cron.d/sample

対処法は簡単で作成したファイルの末尾に行を追加すれば良いだけです。