ナビゲータのEVEです。
昨日はバッチ処理を製造しましたが、それだけでは、自動で起動しません。
本日は、自動でバッチ処理が起動するように、多くのLinuxで使われている、crontabについて解説します。
[crontabとは?]
システムを製造して運用していると、分単位、時間単位、週単位でプログラムを定期的に実行したいというニーズが生まれてくると思います。そのニーズに答えるシステムがcrontabです。
[crontabのコマンド]
crontabのオプションには、以下のようなものがあります。
・-e
crontabを対話的に編集します。通常viで編集を行います。
・-l
crontabの設定内容を一覧表示します。
・-r
crontabの設定を削除します。
・-u user
運用ユーザ(user)を限定します。なお、この権限の付与にはroot権限が必要です。
以下のように実行します。
#sudo crontab [オプション]
[crontabの設定]
crontabの設定の流れの概要を下記に記します。
❶実行したいプログラムを何時に起動するのか記述したファイルを作成します。
❷以下のコマンドでcrontabの設定を行います。
#sudo crontab [❶で作成したファイルパス]
[❶の仕様]
それでは、crontabを実行するに際し、その挙動を決定するファイルを作成していきます。記述内容としては、
1)シェル
2)環境変数
3)メールアドレス
4)❶ファイル格納先
5)起動条件(当該バッチ処理起動時間、シェル、シェルプログラム)
以上です。では、早速記述していきましょう。
#1)起動シェル
SHELL=/bin/bash
#2)cronを実行した時の環境変数
PATH=/sbin:/bin:/usr/sbin:/usr/bin:
#3)クーロンタブ実行時送信先メールアドレス
MAILTO=[Mail]
#4)❶ファイル格納先
HOME=[起動ファイルパス]
#5)起動条件
[時間] [実行権限] [シェル] [シェルプログラム]
以上で記述完了です。なお、昨日bashの所在を「/usr/bin/bash」としていましたが、「bin/bash」にもあるようです。どちらでいいのか分かりませんが、今後は、「/bin/bash」に統一したいと思います。
そして、環境変数ですが、「:」区切りで複数指定できます。
起動条件の時間は以下の順番で先頭から記述していきます。なお、毎日朝4時に実行したいといった場合、月、日、曜日などへ記述する内容がありません。その場合は、当該位置に「*」を記述します。
・分
0〜59
・時間
0〜23
・日
1〜31
・月
1〜12(jan〜dec)
・曜日
0〜7(sun〜sat)※0=Sunday
[crontabの運用]
crontabのために作成した❶のファイルですが、インターネットを検索するとどこへ配置するのか議論されています。
私は、運用性を考え、「/var/www」配下に配置します。理由は、www配下のファイルを別のディスクにコピーすれば、プログラム関連一式すべてバックアップを取ることが可能だからです。散逸するシステム情報を管理するのはコスト面で問題があります。1人で運用しているならなおさらです。
但し、ハッカーにシステムを丸ごと持っていかれる危険性があります。判断はお任せいたします。
[作業を終えて]
Prototype EVEはFedraだったのですが、その時の知識をそのまま生かすことができました。Windowsのタスクスケジューラからすると設定がめんどくさいのですが、プログラムで自動化するという観点でいうと、使い勝手はかなりいいです。システムで必要になりましたら、参考としてください。
では、また!
【参考サイト】
■cron の設定ガイド(NEC)
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image