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.」で設定したファイルを削除しましょう

資料をダウンロード