crontabの設定

特定条件を満たした時、プログラムを動作させてくれるプログラム。
大半は設定した時間にプログラムを動作させるために使用するが、場合によっては条件指定をすることもある。

◆追記

crontabに登録するコマンドに関して、シェルスクリプト内に含まれるコマンドも含め、フルパスで記入しないと実行出来ないコマンドが複数有るようです。crontabに登録しても動いた様子が確認できない場合は、この辺を疑って見てください。

一応、設定項目の『PATH=』を変更することで挙動を変化させることが出来ますが、お薦めはできません。

 

☆ 基本的な使い方

私の場合は、設定の方法を
何時』『誰が』『何をする
と言う3つの区画で覚えてる。

何時』は時間や特定条件
誰が』は実行するユーザー名
何をする』は動作させるプログラム。

設定に関しては、各ユーザー用の設定ファイルを使う方法と、crontabを直接編集する方法がある。

 

crontab -e
vi /etc/crontab

どちらでも構わないが、下のやり方をしていると公言してるとツッコミを入れられることがある。

 

☆ 時間の設定

時間指定は、
固定指定』『複数指定』『範囲指定』『間隔指定』が出来る。まぁ私が覚えやすいように覚えた言葉なので、実際には正確な呼び方があるのかもしれないが・・・。

 

0 19 * * * root portsnap cron fetch update

時間の指定は例の緑色の部分に設定する。
*』 は『全て』と言う意味で考えておけば良い。
』の所で指定すれば、1分ごとにプログラムが実行される事になる。

通常『*』 は5つ並んでいる。それぞれの意味は左から
」「」「」「」「曜日

設定できる数字は
『分』0~59
『時』0~23
『日』1~31
『月』1~12
『曜日』0~7

曜日だけは微妙に特殊で、07日曜日を指す数字になっている。

 

0 7,19 * * * root portsnap cron fetch update

各項目の数字は複数指定する事が出来る。
「分」「時」「日」「月」「曜日」の何処に複数の数字を入力しても問題ない。

数字を複数指定する場合は、数字と数字の間に『,』(カンマ)を付けて区切れば 良い。
2~4個程度の数字を指定するなら、この方法が分かりやすい。

 

0 7,19 * * 1-6 root portsnap cron fetch update

連続した複数の数字を指定する事が出来る。
「分」「時」「日」「月」「曜日」の何処に複数の数字を入力しても問題ないが、普通は『分』に指定することは殆どないな。

数字を指定する場合は、数字と数字の間に『』(ハイフン)を付けて区切れば良 い。

 

0 */3 * * * root portsnap cron fetch update

特定間隔でプログラムを実行するように指定する事が出来る。
「分」「時」「日」「月」「曜日」の何処に複数の数字を入力しても問題ない。

数字を指定する場合は、目的の場所に『/』(スラッシュ)を付け、その後ろにつけれ ば良い。
割り切れない数字が入力されると、割り切れない数字は切り捨てられて繰り返されるらしいが未確認。

 

☆ 条件の指定

時間指定していた部分を、特定条件に変更して実行する事が出来る。
私が使っているのが『@reboot』のみで、それ以外知らないので調べてみたら、ここに色々と書かれているんだが、わざわざ覚えて使うようなモノは殆ど無い。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a029crontabstartup.html

@reboot root portsnap cron fetch update

一応、使い方としては、今まで時間指定をしていた部分と入れ替えるだけ。
この例の場合は、OS起動・再起動時に一度だけプログラムを実行する。

 

☆ その他の設定

時間の指定以外の設定。
後はユーザーの設定とコマンド設定のみ。

0 * * * * root portsnap cron fetch update

ユーザー指定は無くても良いとするページが結構多いが『ディストリビューションの違いが有るんだな』程度に思っておけば良い。
ソフトウエア側が指定したユーザー(Apacheならwwwとか)でコマンドを実行したい場合などが有るため、必要な項目なはずなのですが・・・

 

0 * * * * root portsnap cron fetch update

コマンドの指定は、ここへの設定前、実際に動作するかどうか確認してから設定すれば良い。
動作しないコマンドは、ここで設定しても動作しない。

◆追記

理由は分からないが、最終行に設定を書いて改行してない場合、動作しないプログラムがあった。必ずしも動作しないわけではないようなのですが、念の為に最終行は空行にしておいたほうが良いのかもしれない。

 

 

☆ ログの確認

プログラムが動作しているかどうかはログを確認すれば良い。

vi /var/log/cron

過去ログも3世代までは残ってるんで、必要なら確認してみると良い。
(qjail環境下ではディフォルトでログを残さないみたいですが・・・)

 

役に立ちましたか?
  • 役に立った (0)
  • 少しだけ (0)
  • これじゃない! (0)