■設定ファイルの書式
「/var/spool/cron/user」 ファイルがcrontab-eにより設定される
crontabファイルでは、crond への命令を、「この日付のこの時刻に、このコマンドを実行して下さい。」といった形式で書き込みます。そして、ユーザは、それぞれのcrontabファイルを「/var/spool/cron」配下にuser という名前で所有しており、使用するコマンドは、そのcrontabファイルを所有しているユーザの権限で実行されるので、コマンド使用の際には注意が必要です。
また、このファイルの中は、おおまかに、コメント行、環境変数の設定、cronコマンドの実行、のいずれかに分けることができ、その内容を記述します。なお、コメント行は、通常のファイルと同様に、先頭に '#' を書きます。
なお、このファイルの作成/編集は、 'crontab -e' とコマンドを実行して行ないます。
■環境変数の設定
初めてcrontabファイルを編集した場合には、何も書かれていませんので、以下のフォーマットで記述します。また、各フィールドでは、 '*' を使用することが可能です。
表1 |
|
分 | 0~59 |
時 | 0~23 |
日 | 1~31 |
月 | 1~12 or jan~dec |
曜日 | 0~7 [0,7は日曜日] or sun~sat |
コマンド | 有効なコマンドを記述します。空白を含むことも可能ですが、標準のBourne Shellの書式に従って記述します。 |
曜日の指定 月 火 水 木 金 土 日
1 2 3 4 5 6 7
表2 |
| 設定例 | コメント |
リスト | 0,15,30,45 | 分フィールドで指定した場合、15分に一度処理を実行します。 |
範囲 | 1-5 | 曜日フィールドで指定した場合、月曜日~金曜日に処理を実行します。 |
共存 | 1,3,7-9 | 時間フィールドで指定した場合、1時、3時、7時、8時、9時に処理を実行します。 |
間隔値 | 1-5/2 | 時間フィールドで指定した場合、1時、3時、5時に処理を実行します。なお、間隔値は、「/」の後ろに指定した値の間隔で処理を実行します。
|
【演習1】
crondの設定演習
192.168.56.10へピングを打つシェルスクリプトを自動実行させる
以下、guestで接続して実行してください。
①シェルスクリプトの作成(これは以前viの練習の時に作っていますよ!)
(1)viをファイル名pingWin.shで起動し以下を入力します
#!/bin/bash
date ← dateコマンドを付け加えてください
for i in {1..10};
do
ping -w 3 192.168.56.$i;
done
(2)pingWin.shでファイルを保存します
:w pingWin.sh
(3)実行権を与えます
chmod 755 pingWin.sh
(4)フルパス形式で実行します
./pingWin.sh
②cronjobで自動実行を行う
○cronjobの作成(毎日3時30分と12時30に実行する)
[guest@aso ~]$ crontab -e
no crontab for guest - using an empty one
crontab: installing new crontab
[guest@aso ~]$
○cronjobの内容確認
結果はファイルにリダイレクトしています
[guest@aso ~]$ crontab -l
30 3,12 * * * /home/guest/pingWin.sh > /home/guest/ping_result.log
[guest@aso ~]$
○パーミッションを変更する
[guest@aso ~]$ chmod 757 pingWin.sh
[guest@aso ~]$ ls -al pingWin.sh
-rwxr-xrwx 1 guest guest 70 12月 29 16:08 pingWin.sh
[guest@aso ~]$
○実行テストの実施(現在時刻の2分後を設定して確認)
シェルスクリプトの内容をヤンクとペーストで1行コピーして現在時刻の2分後を設定
[root@guest ~]# date
2015年 1月 19日 月曜日 16:03:25 JST
[root@guest ~]# crontab -e
30 3,12 * * * /home/guest/pingWin.sh > /home/guest/ping_result.log
05 16 * * * /home/guest/pingWin.sh > /home/guest/ping_result.log
[root@guest ~]#
○結果確認
時間が来たらログを確認します
[guest@aso ~]$ ls -al ping_result.log
-rw-r--r-- 1 guest guest 2094 12月 29 16:05 ping_result.log
[guest@aso ~]$
2分後のpingのログファイルの状態をタイムスタンプから確認する
またcatコマンドで内容も確認する
○うまく動かないとき
・crondが動いているか確認する
・実行ファイルの権限が757を確認する
・/var/log/cron を確認する