こんばんは、五月雨です。
今回はLinux上で定期的に何かを実行するときに使用されるcronの使い方を紹介していきます。
メモ
LinuxGSMでサーバの死活監視などの設定をするときにも使用されるものです。
そもそもとして cronってなに?
cronとはLinuxに搭載されているソフトウェアで、定期的な処理を設定するときに用いられます。
Windowsで言うところのタスクスケジューラ。
cronの使われ方
- 定期的なバックアップの作成
- 定期的なソフトウェアの更新
- 定期的なメールの送信
- そのほか何か定期的に実行したいタスクの実行
cronの設定
cronを使うためには、「いつ、誰が何をするのか」を設定させてあげる必要があります。
- いつ : これはシンプルに実行する時間や曜日、頻度を設定します。
- だれ : 設定される処理をどのユーザーで実行するのかを設定します。(正しくは実行したいユーザーでcronの設定をする)
- 何を : どんなプログラム、スクリプトを実行するのかを指定します。
実際の設定方法
設定は crontabというコマンドを実行して行います。
crontabコマンドを実行すると、テキストエディタが開くのでその中に設定を書き込んでいきます。
#以下のコマンドで設定画面(テキストエディタ)に移動する
$ crontab -e
#書き方の一例
*/5 * * * * /home/pwserver/pwserver monitor > /dev/null 2>&1
設定の書き方
crontabの設定は以下のような書式で成り立っています。
分 時 日 月 曜日 実行するコマンド
項目 | 記載する内容 | 説明 |
---|---|---|
分 | 0-59の数字 | 何分に実行するかの設定 例えば10と書けば毎時10分に実行される |
時 | 1-23の数字 | 何時に実行するかの設定 例えば10と書けば毎日10時に実行される |
日 | 1-31の数字 | 何日に実行するかの設定 例えば31と書けば31日に実行される。この場合31日のない月では実行されない。 |
月 | 1-12の数字 | 何月に実行するかの設定 例えば12と書けば12月に実行される。 |
曜日 | 0-7の数字 | 何曜日に実行されるかの設定 1と書けば月曜日に実行されることになる。 ちなみに0と7は日曜日として解釈される。 |
実行するコマンド | コマンド | 実行するコマンドを記載する。 date と書けば指定した日時でdateが実行される |
それぞれの項目は範囲で指定することも可能です。
例えば以下のような日時の書き方は毎月1日の5時と17時に実行するという式になります。
0 5,17 1 * * コマンド
以下の書き方では9時から12時までの1時間ごとに実行されるという指定になります。
0 9-12 * * * コマンド
要するに複数指定する時は「,」で区切り、範囲を指定したいときは「-」でつなげればよいということになります。
また、実行タイミングの指定は以下のような特殊な書き方も出来ます。
式 | 意味 |
---|---|
@reboot | サーバー起動時に1度だけ実行する |
@yearly | 年に1度だけ実行する これは「0 0 1 1 *」(1月1日の0時ちょうど)と指定するのと等価である |
@annually | 年に1度だけ実行する(@yearlyと同じ) |
@monthly | 月に1度だけ実行する これは「0 0 1 * *」(毎月1日の0時)ちょうどと指定するのと等価である |
@weekly | 週に1度だけ実行する これは「0 0 * * 0」(日曜日の0時ちょうど)と指定するのと等価である |
@daily | 日に1度だけ実行する これは「0 0 * * *」(0時ちょうど)と指定するのと等価である |
@hourly | 1時間に1度だけ実行する これは「0 * * * *」(毎時0分)と指定するのと等価である |
上記の書き方を使う場合の書式は以下のようになります。
@reboot コマンド
この書き方を使うと設定ファイルの視認性が少しだけマシになります。(特に複数のスケジュールが書かれている場合)
ぱっと見「0 0 1 * *」だとよくわかりませんが「@monthly」と書かれていれば月に1度となんとなく読めます。
複数設定したい場合
crontabでは1行1スケジュールなので複数設定したい場合は改行してスケジュールを書き込めば設定できる
0 0 1 * * コマンド1(毎月1日の0時ちょうどに実行)
5 0 1 * * コマンド2(毎月1日の0時5分に実行)
まとめ
最後に簡単におさらいしておきます。
cronというのは定期実行機能。
crontabというコマンドで設定出来る。
設定の書き方は「分 時 日 月 曜日 実行するコマンド」
時間などは「,」で区切ると複数、「-」でつなげると範囲で指定できる
複数のスケジュールを設定出来る
以上、cronの設定方法や使い方の説明でした。
それではまた次回。