ユーザ(rootも含む)が個人的に定期的作業を自動化したいという場合、 crontab コマンドを使います。
crontab には3つのオプションがあって、となっています。設定を行うには、-e オプションですね。
- -u : ユーザを指定する
- -l : 現在の設定を表示する
- -r : 現在の設定を削除する
- -e : 現在の設定を編集する
% crontab -e
これで、環境変数 VISUAL もしくは EDITOR で指定したエディタが 起ち上がるので、設定を書き込みます。 EDITOR は vi にしておいた方がよいかもしれないので、 必要ならば次のようにして変更します。
% setenv EDITOR vi
書き込むべきフィールドは次の6つです。
ワイルドカードの * (全てに適用)も使えます。 コマンドは、もちろんシェルスクリプトでも構いませんが、 PATH の設定には注意して下さい。 間違いなく設定するには、コマンドをすべてフルパスで 書くとよいでしょう。
何分 何時(1-24) 何日(1-31) 何月(1-12) 何曜日(0-7,0=7=日曜) コマンド (例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 に喰わせ ます。例えば、先ほどの「毎週日曜日の1時30分にシェルスクリプト /somewhere/hogehoge.sh を実行させ」る設定をファイル /somewhere/hogehoge.cron に保存しておいてから、次のようにします。
% crontab /somewhere/hogehoge.cron
すると、crontab -e で編集したのと同じ効果が得られます。 ただし、既存の /var/cron/tabs/$USER に上書きしますので、 追加などの場合は crontab -e でやらなければなりません。