5.11. cronによる自動スクリプト -crontabコマンド-
5.11. cronによる自動スクリプト -crontabコマンド-
【コマンド説明】
linuxでは定期的にコマンドやジョブ(スクリプト)を自動実行させる場合、cron というデーモンプロセスを利用します。cronを利用する前提としてcrondというデーモンが動作している必要があります。下記コマンドでcrondが動作しているか確認しましょう。
# /etc/init/d/crond status
crond (pid xxx)を実行中...
cronの設定ファイルはデフォルトで下記の種類があります。
ファイル/ディレクトリ名 | 利用者 | 主な用途 |
/var/spool/cron/user | 各ユーザ | ユーザの自動タスク設定ファイル |
/etc/crontab | root | 毎時、毎日、毎月、毎週の自動タスクのメイン設定ファイル |
/etc/cron.hourly | root | 毎時実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.daily | root | 毎日実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.monthly | root | 毎月実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.weekly | root | 毎週実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.d | root | 上記以外の自動タスク設定ファイルを置くディレクトリ |
一般的に/var/spool/cron/userは各ユーザ固有のスケジュールに使用されます。それ以外の設定ファイルはシステムとしてのスケジュールに使用されます。上記設定ファイルは全てviコマンドで編集可能ですが、各ユーザ固有の設定ファイルである/var/spool/cron/userを編集する場合は通常crotabコマンドを使用します。crontabコマンドでは対話的にファイルを編集できるので、書式に間違いがあった場合などに気づきやすくなります。
設定ファイルの書式は下記の通りです。
分 時 日 月 曜日 コマンド |
分 |
0 〜 59 |
時 |
0 〜 23 |
日 |
1 〜 31 |
月 |
1 〜 12 |
曜日 |
0 〜 7 (0と7は日曜日) 0,7日曜日 1月曜日 2火曜日 3水曜日 4木曜日 5金曜日 6土曜日 |
例:毎日午前2時30分に/usr/local/bin/daily_backup.shを実行する場合
30 2 * * * /usr/local/bin/daily_backup.sh
分に「*」を指定した場合は1分毎、「*/5」を指定した場合は5分毎に実行されます。「*/」の後は任意の数字に入れ替えて実行が可能です。
【オプション説明】
crontabコマンドには以下のようなオプションが用意されています。
-e 対話的に設定ファイル編集が可能でviエディタによるファイル編集ができます。
-l 設定ファイルの内容を表示します。
-r 設定ファイルを削除します。
-u どのユーザの設定ファイルを操作するのかを指定します。なお、このオプションはrootユーザのみ使用できます。
※ –rオプションを実行すると確認は実施されず、すぐに設定ファイルが削除されます。使用する際は十分に気をつけて下さい。
【動画説明】
crontabコマンドを使って「毎日16:00にテストファイルをcatする」という設定をしてみましょう。
まずはtest.txtファイルを作成します。
$ echo "this is test" > /home/user1/test.txt
crontabコマンドに-eオプションを用いて設定ファイルを編集して保存します。
$ crontab –e
30 2 * * * cat /home/user1/test.txt
crontabコマンドに-lオプションを用いて設定ファイルを確認します。
$ crontab –l
【問題】
1. crontabコマンドを使用して1分毎にpwdコマンドを実行するように設定してみましょう
2. 「1.」の確認がとれたら「1.」で設定したファイルを削除しましょう