Linuxのcronの読み・書き方・設定方法についてまとめました。
cronの使い方
cron(クロン)は、定期的にジョブを実行する機能です。 cronは、「crondデーモン」と「crontab(実行内容および実行頻度を記述したテーブル)」で構成されます。 「crondデーモン」はシステム起動時にinitプロセスによって起動され、その後は定期的にcrontabをチェックし、何を実行するか判断します。
例えば 「3分間に1回、〇〇のプログラムを自動で実行する」 「毎日12時に、〇〇のプログラムを自動で実行する」 といったように、実行する頻度を細かく調整できます。
cronは、最も短い頻度で1分毎にジョブを実行できます。 cronジョブの設定ファイル「/etc/crontab」はrootユーザーのみ修正可能です。 また、このファイルには、以下のような行が記載されています:
# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user command to be executed
最初の3 行は、タスクの実行環境を設定する変数を定義します。
| 項目 | 概要 |
|---|---|
| SHELL | ジョブの実行に使用するシェル環境(上記の例ではBash シェル) |
| PATH | 実行可能なプログラムへのパス |
| MAILTO | メールでcronジョブの出力を受信するユーザー名。定義されていない場合(MAILTO=)、メールは送信されません。 |
残りの行は、スケジュールされているジョブの設定が以下の書式で記載しています。
書式
minute hour day month day of week user command
【分 時 日 月 曜日 】となります。
| 項目 | 概要 |
|---|---|
| minute | 実行する分を0〜59までの任意の整数で指定 |
| hour | 実行する時間を0〜23までの任意の整数で指定 |
| day | 実行する日を1〜31までの任意の整数で指定 |
| month | 実行する月を1〜12 までの任意の整数で指定 |
| day of week | 実行する曜日を0〜7 までの任意の整数。(0と7は日曜日、1は月曜日、2は火曜日、3は水曜日、4は木曜日、5は金曜日、6は土曜日を指す) |
| user | ジョブが実行されるアカウントのユーザー名を指定 |
| command | 実行するコマンド |
- アスタリスク (/*)
- 全ての有効な値を指定できます。例えば、dayにアスタリスク (*) を指定すると、毎日実行されます。
- ハイフン (-)
- 整数の範囲を指定できます。例えば、1-3は整数 1、2、3を指します。
- カンマ (,)
- カンマ (,) で区切られた値は、一覧を指定します。例えば、「1, 3, 4」はそれら3つの値の整数を指します。
- スラッシュ (/)
- スラッシュ (/)でステップ値を指定できます。範囲の後に「/」を付けると、その範囲内で指定した整数の値をスキップできます。例えば、minuteで「0-59/5」 と指定すると、0〜59分の間で5分ごとに実行できます。
- ハッシュ記号 (#)
- コメント行。
コメント