crontab: bad minuteの原因と修正方法|cron式・登録形式を確認
crontabの登録時にbad minuteやerrors in crontab file, can't installが表示される場合、cron式の先頭フィールド、登録先に応じた書式、不可視文字を順番に確認して安全に修正します。
このページの目的
登録前に止まっているcron式の構文エラーだけを扱います。登録には成功するが予定時刻に実行されない場合や、実行したスクリプトが失敗する場合は別ガイドに分けます。
最初にやること
現在のcrontabをバックアップし、エラー行の先頭5フィールドを確認。crontab -e用か/etc/cron.d/用かを先に見分けます。
関連するcronガイド
cron式の基本と登録方法
時刻フィールドとcrontab形式の違いを、設定例と一緒に確認できます。
登録形式を確認 → 実行障害cronが実行されない
登録には成功するが予定時刻に動かないとき、サービス・ユーザー・ログを確認します。
実行状況を確認 → 設定ツールcron式を作成・レビュー
時刻指定を作成して、フィールドの値と実行ユーザーの違いを登録前に確認します。
cron式を確認 →bad minuteなどのcrontab登録時のエラーです。実行環境のPATHや出力先権限はcronスクリプト失敗ガイドで扱います。書式を登録前にレビュー
構文を直しても、対象ユーザーや標準出力の扱いで運用事故が起こり得ます。登録形式とコマンドも合わせて確認してください。
bad minuteは通常、crontabの登録構文に問題がある状態
多くのcron実装では、bad minuteは時刻指定の最初の「分」フィールドの解釈に失敗したことを示します。ただし、分そのものが誤りとは限りません。時刻欄より前の不要な文字、登録先の違い、フィールドのずれなどでも発生します。
systemctl restart cronや再起動を最初に実施しても、誤った書式の修正にはなりません。ユーザーcrontabは5フィールド、/etc/cron.dはユーザー欄が必要
| 登録先 | 行の形式 | 注意 |
|---|---|---|
crontab -e | 分 時 日 月 曜日 コマンド | 時刻5項目の後にコマンド。ユーザー名は入れない |
/etc/crontab・/etc/cron.d/* | 分 時 日 月 曜日 ユーザー コマンド | 多くのVixie/Cronie系cronではユーザー名を指定する |
システム用の行をユーザーcrontabへそのまま貼り付けると、ユーザー名がコマンドの一部として解釈され、別の障害につながる場合もあります。登録形式を揃えることが重要です。実装差があるため、OSに付属するcrontab(5)を優先してください。
最初は現在設定を保存し、エラー行を確認
スケジュールの意味と登録先の形式を見てから、エラーで示された行番号や、行頭に想定外の文字列がないか確認します。現在のcrontabが存在しない場合、crontab -lはエラーを返すことがあります。バックアップ先ファイルには認証情報や機密コマンドが含まれる可能性があるため、保管・共有には注意してください。
値の範囲、記号、フィールドのずれを修正
| 誤った例 | 問題 | 修正の考え方 |
|---|---|---|
60 * * * * | 分の範囲外 | 通常は0〜59。目的の時刻を再指定 |
*/0 * * * * | ステップ0は無効 | 1以上の間隔値を指定 |
5 * * * | 時刻欄が1項目不足 | 5フィールドを揃えてからコマンドを記載 |
5, * * * * | 末尾カンマなど区切りの誤り | カンマ区切りの各値を見直す |
# 5 * * * * ... | コメント行 | そのままなら登録されない。実行したい場合は#を外して構文を確認 |
標準的な時刻範囲は分0〜59、時0〜23、日1〜31、月1〜12、曜日0〜7(0と7が日曜)です。ただし拡張構文や曜日名などは実装で異なるため、手元のmanページに合わせて確認します。
全角記号・CRLF・不可視文字を確認
全角アスタリスク、全角数字、ノーブレークスペース、Windows形式CRLF改行などが混じると、一見正しいcron式でもパーサーが受け付けないことがあります。sed -n 'l'で行末や制御文字を表示し、コピー元の文字を確かめます。
登録前に安全に検証する
既存crontabを置き換える前に、cron設定ツールと対象OSのmanページで時刻指定を検証します。Cronieの一部バージョンではcrontab -T ファイルによる構文検証が利用できますが、全環境で使えるオプションではありません。man crontabで対応を確認してください。
crontab candidate.cronは既存のユーザーcrontabを置き換えます。差分確認・バックアップをせず実行しないでください。crontab -rも安易に実行しません。管理された構成では適用方法を管理者・変更手順に合わせます。修正しても登録できない場合の分岐
| 結果 | 次の確認 |
|---|---|
bad minuteが続く | エラー行の先頭、空白、全角文字、日時5フィールド、曜日範囲を再確認 |
bad hourなど別のエラーに変化 | 次のフィールドの範囲と区切り文字を確認。エラーが変わっても未修正の欄が残る場合あり |
| 登録はできたが実行されない | cron未実行ガイドでユーザー、サービス、時刻、ログを切り分ける |
| 実行記録はあるが処理が失敗 | スクリプト失敗ガイドでPATH・作業ディレクトリ・権限を確認 |
| システムcronだけ失敗 | /etc/cron.dの所有者・モード・ユーザー欄、対応するcron実装、syslogを確認 |
修正後は登録と実行を分けて確認
登録完了後に次回実行時刻とタイムゾーンを確認し、実際にジョブが実行されたか、結果が成功したかをログやアプリの出力で検証します。crondとcronのUnit名は環境で異なります。登録できたことは正常実行を保証しません。