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コマンドを実行することで、プログラムの定期実行が可能になります。
この記事へのコメントはこちら