【Linux】cron/crontabの読み・書き方・設定方法

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分ごとに実行できます。
  • ハッシュ記号 (#)
    • コメント行。

コメント