8.6. 定期的にプログラムを実行【crontab】

定期的に実行したいプログラムを設定するには、crontab コマンドを使用します。crontab で設定を行うには、crond というデーモンが起動している必要があります。通常は自動的に起動されていますが、サービス管理ツールである turboservice などで確認してください。at コマンドは、指定日時に一度だけプログラムを実行しますが、crond は定期的にプログラムが実行できる点が異なります。指定したコマンドの実行結果が標準出力される場合は、at コマンドと同様に、その内容が指定したユーザー宛にメールで送信されます。メールは、mail コマンドなどで確認できます。

なお、Turbolinux 10 Server では、事前に用意された、/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly ディレクトリにスクリプトを配置することで、毎時、毎日、毎週、毎月と定期的にジョブを実行させることも可能です。

設定は、crontab コマンドで行います。以下のコマンドを実行すると、vi エディタが起動して設定ファイルが開きます。なお、設定ファイルは /var/spool/cron/ ディレクトリ以下に各ユーザー名のファイルで保存されます。

$ crontab -e

設定ファイルは、以下の書式で入力します。

* * * * * コマンド名

5つの * は、それぞれ分、時、日、月、曜日を意味します。* は、ワイルドカードを示し、毎月や毎日と指定したい場合、値は * と指定します。値は , で区切って複数指定することも可能です。曜日の指定は、0 が日曜日となり、その後は順番に割り当てられます。よって、 6 は土曜日となります。

例えば、毎月1日と 15日の午前4時に /usr/local/bin/mybackup を実行したい場合は、以下のように指定します。

0 4 1,15 * * /usr/local/bin/mybackup

複数のコマンドを設定する場合は、2行目以降に続けて入力します。設定完了後、保存して vi を終了します。これで、crontab の設定は完了です。指定した日時にコマンドが定期的に実行されます。

設定を修正する場合は、-e オプションを付けて crontab コマンドを実行します。

設定を確認するには、-l オプションを指定して、crontab コマンドを実行します。

$ crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXQJwKFY installed on Mon Feb 17 18:37:10 2003)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 4 1,15 * * /usr/local/bin/mybackup

また、設定を削除したい場合は、-r オプションを指定してコマンドを実行します。

$ crontab -r

なお、一般ユーザーの crontab の実行を /etc/cron.allow/etc/cron.deny で制限することが可能です。/etc/cron.allow が存在すれば、このファイルで指定されたユーザーのみ crontab での設定が可能です。/etc/cron.allow が存在せず、/etc/cron.deny が存在する場合、/etc/cron.deny に指定されているユーザーは crontab での設定は行えません。どちらのファイルも存在しない場合は、全てのユーザーが設定することができます。