cronジョブ入門:crontabの書き方と例
cronはLinuxやmacOSのサーバーで、決まった時間にコマンドを実行する仕組みです。このガイドではcrontabの書式、よく使うスケジュール、cronジョブが気づかないうちに失敗する原因を紹介します。
cronジョブを登録する
crontab -eを実行すると、自分のcrontabがエディターで開きます。1行に1ジョブずつ、5つのスケジュール項目とコマンドを書きます。例:0 2 * * * /home/me/backup.sh。保存してエディターを閉じれば、cronが自動で反映します。
登録したジョブはcrontab -lで一覧できます。システム全体のジョブは/etc/crontabや/etc/cron.dにあり、スケジュールの後ろに実行ユーザーの項目が1つ増えます。
5つの項目を読む
左から順に、分・時・日・月・曜日です。すべての項目が現在時刻に一致したときにジョブが実行されます。*はすべての値、カンマは列挙、ハイフンは範囲、スラッシュは間隔を表します。
出力をログに残す
cronには端末がないため、出力はユーザーにメールされるか、消えてしまいます。コマンドの末尾に>> /var/log/myjob.log 2>&1を付けると、問題が起きたときに確認できるログが残ります。
cronジョブが動かない原因
- cronのPATHは最小限です。/usr/bin/python3のように、プログラムやスクリプトはフルパスで書きましょう。
- スクリプトに実行権限がありません。chmod +xを実行してください。
- シェルのプロファイルの環境変数は読み込まれません。crontabかスクリプトの中で設定してください。
- サーバーのタイムゾーンが自分の環境と違います。dateやtimedatectlで確認しましょう。
- コマンド内の%は改行に変わります。\%と書いてください。
本番に入れる前にスケジュールを確認
このページのcron解説ツールに式を貼り付ければ、日本語で意味を確認し、次の実行日時もチェックできます。範囲外の値や、日と曜日を同時に指定したときの落とし穴を本番前に見つけられます。