cron による定期作業の自動化

ユーザ(rootも含む)が個人的に定期的作業を自動化したいという場合、 crontab コマンドを使います。


crontab の作成

crontab には3つのオプションがあって、 となっています。設定を行うには、-e オプションですね。

% crontab -e

これで、環境変数 VISUAL もしくは EDITOR で指定したエディタが 起ち上がるので、設定を書き込みます。 EDITOR は vi にしておいた方がよいかもしれないので、 必要ならば次のようにして変更します。
% setenv EDITOR vi

書き込むべきフィールドは次の6つです。
何分 何時(1-24) 何日(1-31) 何月(1-12) 何曜日(0-7,0=7=日曜) コマンド
ワイルドカードの * (全てに適用)も使えます。 コマンドは、もちろんシェルスクリプトでも構いませんが、 PATH の設定には注意して下さい。 間違いなく設定するには、コマンドをすべてフルパスで 書くとよいでしょう。

(例1)毎週日曜日の1時30分にシェルスクリプト /somewhere/hogehoge.sh を実行させる
30 1 * * 0 /somwehere/hogehoge.sh

(例2)5分毎にシェルスクリプト/somewhere/hogehoge.sh を実行させる
*/5 * * * * /somwehere/hogehoge.sh

設定ファイルは、/var/cron/tabs/$USER となって保存されますが、 root 権限でないと中身は見られません。 また、設定を変えたい時はこのファイルを直接編集するのではなく、 crontab コマンドを使って下さい。

crontab の作成 II

上のやり方のように、いちいちエディタを起ち上げるのが面倒な場合は、 あらかじめ設定を書き込んだファイルを用意してそれを crontab に喰わせ ます。例えば、先ほどの「毎週日曜日の1時30分にシェルスクリプト /somewhere/hogehoge.sh を実行させ」る設定をファイル /somewhere/hogehoge.cron に保存しておいてから、次のようにします。

% crontab /somewhere/hogehoge.cron

すると、crontab -e で編集したのと同じ効果が得られます。 ただし、既存の /var/cron/tabs/$USER に上書きしますので、 追加などの場合は crontab -e でやらなければなりません。


FreeBSD の部屋


Apr. 1, 2000