crontab 定期的にコマンドを自動実行

ページコンテンツ

用途


crontabでは、定期的にコマンドを自動実行します。apacheの定期的な再起動等で利用されます。定期的にジョブを実行するcronは、スケジュール管理をするデーモンであるcronとスケジュールを管理するcrontabで構成されています。cronデーモンは、1分毎に起動され、crontabファイルを確認し、実行スケジュールがあれば実行します。

ファイルの格納場所


  • ユーザのcrontabファイル
    /var/spool/cron
  • システム全体のcrontabファイル
    /etc/crontab
    /etc/cron.dディレクトリ配下のファイルもシステムのcrontabファイルとして利用される

構文


crontab [オプション]

書式


crontabファイルの書式は下記の通りです。指定時刻なるとコマンドが実行されます。

分 時 日 月 曜日 コマンド

フィールド内容
0~59までの整数
0~23までの整数
1~31までの整数
1~12までの整数、又はjan~dec
曜日1~12までの整数、又はjan~dec
コマンド実行すべきコマンド

「#」がある行はコメントです。
「*」は全ての値にマッチします。
複数の値を設定する場合は、「,」で区切ります。
期間を指定することも可能です。
例)分の指定で、[0-59/5]と設定すると、0分~59分の間で5で割り切れる時間で実行されます。つまり、5分、10分、15分、20分、25分、30分、35分、40分、45分、50分、55分と5分おきに実行されます。

オプション


オプション説明
-e登録されているスケジュール (cronジョブ)を編集
※デフォルトに設定されているエディタでcrontabファイルが開かれるので、編集を行う。
-l登録されているスケジュール(cronジョブ)を表示
-r登録されているスケジュール (cronジョブ)を削除
-u ユーザ名 指定したユーザのスケジュールを処理
スーパーユーザのみが利用可能

使用例


[root@*********]# crontab -e
10 0 * * * sh hoge.sh

viと同じ編集操作で、実行処理の設定を行います。

  • 「i」入力で編集モード
  • 実行処理の設定
  • 「Esc」
  • 「wq」で保存

[root@*********]# crontab -l
10 0 * * * sh hoge.sh

crontabファイル


ユーザのcrontabファイル

ユーザのcrontabファイル は下記ディレクト配下に格納されます。crontabファイル は、crontabコマンドを利用して

/var/spool/cron/

システムのcrontabファイル

ユーザのcrontabファイルとは別に、システムのcrontabファイルが存在します。

/etc/crontab

一般的には、「/etc/crontab」ファイルから「/etc/cron.*」ディレクトリに置かれたファイルを呼び出すようにしています。

atとの違い


atは一度限りのジョブ予約ですが、cronは定期的にジョブを繰り返します。

cronのアクセス制御


cronコマンドを利用するユーザを制限することができます。下記ファイルの順で制限制御を行います。

  1. 「/etc/cron.allow」があれば、記載されているユーザのみcronを利用できる
  2. 「/etc/cron.allow」がなければ、「/etc/cron.deny」を参照し、記載されていない全てのユーザでcronを利用できる
  3. どちらのファイルもなければ、全てのユーザがcronを利用できる

関連記事



最近の記事


Linux以外のIT技術については、下記サイトにアクセスしてください。
気まぐれSE研究所(https://www.se-lab.yokohama/)