このページで分かること
cronが動かない時の確認方法を整理します。手動実行、node/phpパス、ログ、flock、時刻、管理画面cron、翌日確認を扱います。
起きている症状
手動では動くのに定期実行されない、ログが出ない、出力ファイルの更新時刻が変わらない状態です。
最初に確認すること
「手動では動くのにcronで動かない」原因の大半は、手動実行時とcron実行時で環境が違うことにあります。cronは最小限の環境変数しか持たずに実行されるため、手動なら通るパスや設定が通らないのです。この前提を頭に置いて、次の順で確認します。
| 確認 | やり方 | そこから分かること |
|---|---|---|
| 手動実行が成功するか | cronに書いたコマンドをそのままシェルで実行 | 手動で失敗するなら、cron以前に処理自体の問題 |
| 実行コマンドのパス | node、php等をフルパス(/usr/bin/php など)で書いているか確認 | cron環境ではPATHが最小限のため、フルパスでないと見つからない |
| ログ保存先に書き込めるか | コマンド末尾に >> /path/to/log 2>&1 を付けて出力を捕捉 | 「動いていないのか、動いてエラーなのか」がここで初めて分かる |
| flock等の重複防止が邪魔していないか | ロックファイルが残っていないか確認 | 前回の異常終了でロックが残り、以降の実行がすべてスキップされる事故 |
| 実行時刻とタイムゾーン | サーバーのタイムゾーン(JSTかUTCか)を確認 | 「朝9時のつもりが実はUTC9時(日本の18時)」というずれ |
| 翌日に更新時刻を見る | 出力ファイルのタイムスタンプを翌日確認 | 設定変更が本当に効いたかは、次の定時実行まで分からない |
デバッグの近道は「2>&1でログを取る」ことに尽きます。ログさえあれば原因の9割はメッセージに書いてあります。逆にログなしの状態でcron設定をいじり続けるのは、目隠しで作業しているのと同じです。設定時の予防はcron設定チェックリストを参照してください。
Codexに再確認させる指示文
cronが動いていない可能性があります。手動実行、実行コマンド、node/phpの場所、ログ、flock、実行時刻、出力ファイル、翌日確認項目を確認し、cron登録は変更せず報告してください。やってはいけないこと
- 手動実行に失敗したままcron登録する
- 既存cronを上書きする
- ログなしで原因を判断する
- 同じcronを重複登録する
戻す判断
既存cronを壊しそうな場合は変更せず停止します。手動実行とログ確認が通ってから登録や修正へ進みます。
確認チェックリスト
- 手動実行が成功する
- ログが残る
- 出力ファイルが壊れていない
- 重複cronがない
- 翌日に実行記録がある


