cronは簡単な設定ファイルを書くだけで、コマンドを定時実行をしてくれるスケジュール機能。
UNIX系OSで定期的に何かさせたい時には必ず出てくる。
メイン設定ファイルの/etc/crontabや、1日1回実行する/etc/cron.dailyディレクトリ、1時間に1回実行する/etc/cron.hourlyディレクトリ等色々設定できる場所がある。 今回は、/var/spool/cronディレクトリ以下にファイル名=ユーザ名として記述すると、そのユーザの権限で実行してくれるパターンを使う。
設定ファイル:/var/spool/cron/root
00 04 * * * /root/remotebackup.sh >> /var/log/backup.log
cron設定ファイルの書式は
分 時 日 月 曜日 コマンド
先の設定ファイルだと、毎日4時ちょうどに/root/remotebackup.shをキックすると言うことになる(>>は該当コマンドの標準出力を右のファイルに追記すると言う表現で、>だと上書きになる。 コマンドラインから cat > crontabなんて打ち込むと、入力モードになるんで適当に打ち込んでctrl+dで閉じると、入力した内容がcrontabファイルに書き込まれるんで、何かの拍子にエディタが消失してしまったり、ごくごく短い設定を書きたいときなどに使ったりする)
毎週月曜にだけ走らせたければ00 04 * * 1 ~の様に記述する(曜日は日曜が0で土曜日が6)
カンマ区切りで複数の値も設定できるので、00 09,17 * * ~と書けば9時5時に走るし、/を使って間隔指定もできるので*/15 * * * ~とすると15分ごとに走らせることが出来る。 更に、-を使って範囲指定も出来るので、就業時間中10分ごとにしたいとか言った場合、*/10 9-16 * 1-5 ~なんてしておけば、月曜日から金曜日の9時から5時の間、10分ごとに実行なんていう複雑な動作も出来る。
これを使えば、サーバの多くの機能を自動化したり(前回作ったバックアップや、再起動、ログ管理等々)出来るし、ディレクトリやメールを監視するようなサーバプログラムを簡単に作ることが出来る。
(500)