cron・crontab設定の書き方と安全な登録・確認方法
このページの目的:cron登録前に、時刻・実行ユーザー・実行環境を確認し、ジョブの実行漏れを防ぐ
このページで分かること
- cron式5項目の意味
- crontabと/etc/cron.dの違い
- 問題発生時の案内
- 安全な設定例とテスト方法
先に結論
cronは時刻が正しくても、実行ユーザー、PATH、相対パス、標準出力・標準エラーの違いで失敗します。登録前に実行ユーザーでコマンドを手動実行し、絶対パスとログ出力先を明示します。
cron設定をすぐ作成・確認する
実行時刻やコマンドを入力して、cron式、ユーザー欄、PATH、確認コマンドをまとめて確認できます。
問題がすでに起きている場合:すでに登録したcronが動かない場合は、専用のトラブル解決ガイドで確認順に切り分けられます。 トラブル解決ガイドを見る →
cron式の基本
分 時 日 月 曜日 コマンド
* * * * * /path/to/command
| 位置 | 意味 | 範囲 |
|---|---|---|
| 1 | 分 | 0〜59 |
| 2 | 時 | 0〜23 |
| 3 | 日 | 1〜31 |
| 4 | 月 | 1〜12 |
| 5 | 曜日 | 0〜7(0と7は日曜) |
設定例
# 毎日2:30
30 2 * * * /usr/local/bin/backup.sh
# 平日の9:00
0 9 * * 1-5 /usr/local/bin/report.sh
# 10分ごと
*/10 * * * * /usr/local/bin/health-check.sh
crontabと/etc/cron.dの違い
| 場所 | 書式 | 実行ユーザー |
|---|---|---|
crontab -e | 5項目+コマンド | そのcrontabのユーザー |
/etc/crontab・/etc/cron.d/* | 5項目+ユーザー+コマンド | 設定行で指定 |
よくあるミス:
/etc/cron.dの書式をユーザーcrontabへ貼り付けると、ユーザー名がコマンドとして解釈されます。逆に、/etc/cron.dでユーザー欄を省略すると実行されません。問題発生時の案内
この作業ガイドは、cronを登録する前の時刻・実行ユーザー・実行環境の設計を対象にしています。登録済みのジョブが動かない場合は、実行記録の有無から調査先を分けます。
予定時刻に実行されない場合: cron・crontabが実行されない原因と確認手順で、登録先、時刻、cronサービス、実行記録を順番に確認してください。
cron特有の注意点
- %記号:エスケープしないと改行として扱われる場合があります。
- PATH:必要ならcrontab冒頭で明示します。
- タイムゾーン:OS・コンテナ・cronデーモンの時刻設定を確認します。
- 重複実行:処理時間が実行間隔を超える場合は
flockを検討します。 - 改行:
/etc/cron.dのファイル末尾には改行を入れます。
安全な設定例
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/10 * * * * /usr/bin/flock -n /run/job.lock /usr/local/bin/job.sh >> /var/log/job.log 2>&1
本番前チェック: cronへ登録する前に同じユーザー、同じ引数、同じ出力先で手動実行し、終了コードとログを確認してください。
関連するトラブル解決
cronは実行されるがスクリプトが失敗する場合は、実行ユーザー、PATH、相対パス、環境変数、権限を確認します。
cron設定を作成・レビュー
時刻指定、ユーザー欄、PATH、%記号、確認コマンドをまとめてチェックします。