crontabコマンドで処理を定期実行させる方法

 

crontabとは

crontabとは、シェルやコマンドを定期実行するためのタスクスケジューラーです。深夜時間帯のバックアップ処理を自動化したい場合や、簡単なバッチ処理を定期実行させるために利用されます。

Windowsでいうところの、schtasksコマンドにあたります。

crontabコマンドの使い方

ここでは、CentOS6を前提に説明してきます。

基本的な書式は次の通りです。

crontab [-u user] [-l | -r | -e] [-i]
crontab [-u user] file
オプション 操作内容
-u 実行ユーザー
-l 一覧表示
-e 編集
-r 削除
-i 確認プロンプト

crontabコマンドの実行方法

タスクスケジューラーの設定内容を確認する場合

crontabの設定内容を確認する場合は、「l」オプションを付けて実行します。

crontab -l

タスクスケジューラーを編集したい

crontabの設定を編集したい場合は、「e」オプションを付けて実行します。

crontab -e

タスクスケジューラーの内容を削除したい

crontabの設定を削除したい場合は、「r」オプションを付けて実行します。

crontab -r

このコマンドを実行した場合は、確認のメッセージがないまま、crontabの情報が削除されてしまいます。
編集用オプションの「e」とキーボード配置が近いので、タイプミスをしないように気をつけましょう。

タイプミスが怖いと思う人は、エイリアスに「i」オプションを付けておくと良いでしょう。

alias crontab='crontab -i'
source ~/.bash_profile
alias
crontab -r
crontab: really delete user's crontab?

crontabの記載方法

crontabはエディタでスケジュールの登録を行っていきます。登録の書式は次の通りです。

* * * * * [実行コマンド]

「*」は左から、分 時 日 月 曜日 となります。

分 時 日 月 曜日 [実行コマンド]

それぞれの項目に入力可能な数値は次の通りです。

*の項目左から 設定内容
0-59
0-23
1-31
1-12
曜日 0-7(0:日,1:月,2:火,3:水,4:木,5:金,6:土,7:日)

また、複数指定や範囲指定、間隔指定なども可能です。

指定内容 指定方法 例:時で指定されている場合
複数指定 9,12,18 9時、12時、18時に実行
範囲指定 3-6 3時、4時、5時、6時に実行
間隔指定 0-23/1 1時間おきに実行

記載例

2月3日の9時に実施したい場合

0 9 3 2 * [実行コマンド]

10分おきに実施したい場合

*/10 * * * * [実行コマンド]

1時間おきに実施したい場合

0 0-23/1 * * * [実行コマンド]

月曜日から金曜日の朝9時に実施したい場合

0 9 * * 1-5 [実行コマンド]

9時、12時、15時、16時、17時に実施したい場合

0 9,12,15-17 * * * [実行コマンド]

メール送信

crontabが実行されるとメールが送信されます。メール送信のさいに気を付けることをまとめておきます。

メール送信をやめる

crontabの先頭行に下記を記載します。

MAILTO=""

MAILTO変数に空白を入れることでメール送信をなくすことができます。

メールアドレスを設定すると、そのアドレスにメールが通知されます。複数指定する場合はカンマ区切りで指定が可能です。

スケジュールごとにメールの出力先を変更する

分 時 日 月 曜日 [実行コマンド] > /dev/null 2>&1|Mail [メールアドレス]

不要な標準出力を無くす

標準出力を抑止しておきましょう。

分 時 日 月 曜日 [実行コマンド] > /dev/null 2>&1

まとめ

crontabコマンドを実行することで、プログラムの定期実行が可能になります。

  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。