今日も元気にテクニカル

技術情報書きたいけど本ブログに書きたくないからこんな名前になりました。

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 でユーザー定義を呼び出して設定するみたいです。