CRONコマンドについて

<<ホームへ戻る

<<TOPに戻る 合計:
昨日:
今日:

更新日:2006/8/5

定期的に決まったコマンドを実行する、あるいはシェルを実行したい場合に、Cronを使って行う。

下記のような三つの場合を考慮する

1.cron.hourly、cron.daily、cron.weekly、cron.monthlyを使った設定
2./etc/crontabに直接書き込む設定
3.crontabコマンドを使った設定

1.cron.hourly、cron.daily、cron.weekly、cron.monthlyを使った設定 <<TOP

通常、cronはLinuxをインストールするとデフォルトでインストールされる必要不可欠な機能である。
cronは、実行時に/etc/crontabに書かれた内容を参照して実行する。
crontabの内容は、下記のようになっている。

[root@server ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly ←@
02 4 * * * root run-parts /etc/cron.daily ←A
22 4 * * 0 root run-parts /etc/cron.weekly ←B
42 4 1 * * root run-parts /etc/cron.monthly ←C

cron.hourly、cron.daily、cron.weekly、cron.monthlyは、crontabの中でスケジューリングされていて、各ディレクトリになっている。
下記のような意味がある。

@のcron.hourlyは、毎時**時01分おきに実行する
Aのcron.dailyは、毎日AM 4時02分に実行する
Bのcron.weeklyは、毎週日曜日AM 4時22分に実行する
Cのcron.monthlyは、毎月1日のAM 4時42分に実行する

自分の実行したいスケジューリングのディレクトリに実行したいシェルスクリプトを入れておく。
例えば、毎時**時01分おきにnslookupを実行する場合、は以下のようにする。

# cd /etc/cron.hourly

# vi nslookup.cron

#!/bin/sh
nslookup arisonsvr.org

# chmod 755 nslookup.cron ←実行権限を与えることを忘れないように。

こんな感じで、シェルファイルを作りディレクトリに置いておけば、実行できる。

2./etc/crontabに直接書き込む設定 <<TOP

もう一つの、方法は直接/etc/crontabに書き込む方法がある。ここでは、その方法を説明する。
下記のような順序になっている。

分 時  日 月 曜日   ユーザ  実行コマンド
01  4  *   *   0    root   /usr/bin/webalizer

  分 : 01〜59
  時 : 1〜24
  日 : 1〜31
  曜日: 0(日曜)〜6(土曜)

この場合は、毎日AM 4時01分に/usr/bin/webalizerコマンドを実行するようになっている。

10分おきにコマンドを実行。

*/10 * * * * root /usr/bin/webalizer

1分おきにコマンドを実行。

* * * * * root /usr/bin/webalizer

毎時0分(1時間に一回)にコマンドを実行。

0 * * * * root /usr/bin/webalizer

1日一回、夜中の2時(午前2時)にコマンドを実行。

0 2 * * * root /usr/bin/webalizer

日曜の朝、午前7時にコマンドを実行。

0 7 * * 0 root /usr/bin/webalizer

日中9時30分〜17時30分の間は、毎時30分にコマンドを実行。

30 9-17 * * * root /usr/bin/webalizer

毎週月曜日と木曜日の8時15分と12時15分のみコマンドを実行。

15 8,12 * * 1,4 root /usr/bin/webalizer

下記は、エラーを出力したくないとき。

*/10 * * * * root /usr/bin/webalizer > dev/null 2>&1    ←これはエラー出力をしたくないときの記述。

3.crontabコマンドを使った設定 <<TOP

cronの設定は、crontabコマンドを使っても設定できる。
但し、/etc/crontabファイルを直接編集したりcrontabコマンドを使ったりで編集方法を混在させないこと。
これを行うとcronの設定の不整合が起きてエラーを吐く。編集方法はどちらか一方で行うこと。

■ 現在の設定を見る

# crontab -l

■ 設定を変更する

# crontab -e ←Viコマンドのように修正できる

■ 設定内容の削除

# crontab -r


  <<TOP