developer

定期実行(Cron)の設定を絶対にミスらないための基礎知識

2026-03-13 更新

サーバーサイドエンジニアにとって、バッチ処理やバックアップの自動化に欠かせないのが「Cron(クロン)」です。しかし、このCron、初心者が設定すると「なぜか動かない」という現象に非常に遭遇しやすい、ちょっとした曲者でもあります。

今回は、Cron設定で初心者が必ずと言っていいほどハマるポイントを3つに凝縮して解説します。

1. 「環境変数」は継承されない

最も多いミスが、ログインシェルで設定している環境変数(PATHなど)がCronでも使えると思い込んでしまうことです。Cronは最小限の環境で実行されるため、シェルで実行できるコマンドがCron経由だと「見つからない(Command not found)」となることが多々あります。

対策: コマンドやスクリプトへのパスは、必ず /usr/local/bin/php のように「絶対パス」で記述しましょう。

2. 曜日の指定は「0」か「7」か

Cronの設定項目でも特に混乱を招くのが曜日です。0〜6なのか、1〜7なのか。一般的には「0と7が日曜日」として扱われますが、OSやバージョンによって挙動が微妙に異なる場合があります。

また、「毎月15日の月曜日」と設定したつもりが「毎月15日 または 月曜日」という条件(OR)になってしまうなど、複雑なスケジュール管理には注意が必要です。

3. 標準出力・標準エラーの行方

Cronでスクリプトが失敗した際、エラーメッセージはどこへ行くのでしょうか?デフォルト設定では、実行ユーザーのメールボックスに送られようとしますが、多くの現代的な環境ではそのまま捨てられてしまいます。そのため、なぜ失敗したのかが闇に葬られてしまうケースが多いのです。

対策: >> /var/log/cron.log 2>&1 のように、ログファイルにリダイレクトする習慣をつけましょう。

安全に設定内容を生成する

Cronジェネレーターを使う

まとめ

Cronは非常に強力なツールですが、その「暗黙の仕様」を理解しておくことが安定稼働への近道です。手書きでミスをするくらいなら、ジェネレーターを活用してセーフティに設定を進めましょう。

トピックス一覧へ