CentOSでのcronの使い方。
3ヶ月くらい放置していたわりにはコマンド結構覚えててびっくり、もとい良かった。
あるタスクを決まった周期で実行するためのコマンドとして、Windowsではschtasksがあるように
Linuxではcronというやつがあります。
crontab -e
で、現在のスケジュール定義を規定のエディタで開く。そこに
*/30 * * * * ruby /home/samba/scr/get_rootip.rb
と書いてやる。時間の単位は5段階あって右から
分 時 日 月 曜日
となる。アスタリスクを使用した単位は毎分/毎時/毎日/毎月/毎曜日となり
なんらかの数字を入力した単位は、その通りのタイミングで動作する。詳しくは以下の通り。
http://www.dream-seed.com/pukiwiki/index.php?Linux%2Fcron%A4%CE%C0%DF%C4%EA 分:0〜59で指定します。*(ワイルドカード)も使用可能です。 時:0〜23で指定します。*(ワイルドカード)も使用可能です。 日:1〜31で指定します。*(ワイルドカード)も使用可能です。 月:1〜12で指定します。*(ワイルドカード)も使用可能です。また、月の名前の最初の3文字で指定することもできます。jun、julなど。 曜日:0〜7で指定します。*(ワイルドカード)も使用可能です。0と7が日曜日で6が土曜日です。また、sun等の名前で指定することもできます。 コマンド:cronが実行するコマンドです。当然実行可能なものでなければいけません。 日付、時間の部分は範囲指定が可能です。例えば1時、2時、3時なら 時間のフィールドに「1,2,3」と書く代わりに「1-3」と書けます。 また、何分おき(あるいは何時間おき)という場合は「*/」の後に書きます。 2時間おきなら「*/2」です。「1,4,7,10」は「1-10/3」と書くこともできます。
今回は自宅ルータのIPをFTPサーバにアップするスクリプトを30分毎に動かすように設定しました。
ちなみに設定ファイルは"/var/spool/cron"以下に作られ、
cronのログは"cat var/log/cron"で閲覧できるので覚えておこう。
システムが使用する定期処理用のディレクトリ
/etc/crontabはシステムが使用するcronリストです。
- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.montyly
に詳しい設定内容が書かれています。
※"主にシステムが使用する"だけで、自分でここに設定を書いてしまってもいいです。
ただ一般的には前出の crontab -e でユーザー定義を呼び出して設定するみたいです。