Self maintenance

古来よりUNIXシステムには定期的にシステムをメンテナンスする仕組みを備えています。コンピュータは24/7で動いているし、人間よりも決まったことを決まった時間に行うことがとても得意です。管理者が定期的にしなければならないことは、スクリプト化できますから、これをスケジュール化しておけばOKということで、そもそも基本的なことはシステム(OS)に組み込まれています。なので、あんまり人間が手をかける必要は実はなかったりします。物足りなかったり、「俺っちは、こういうことをしてほしいんだよう」という向きは、この仕組みを利用すれば、あとはシステムが忘れずにやってくれます。
しかし、最近24/7で動かないUNIXシステムが巷に溢れましたねぇ。Mac OS Xとか言う奴です。大体人間が寝てる時間に、寝てることが多いようです。その結果、ログファイルがGBを越えていたりするわけです。

定期的なself maintenance

このself maintenaceは伝統的に、毎日午前3時15分。毎週月曜日の午前5時30分。毎月1日の午前3時15分に実行されています。あと、logファイルのローテーションは深夜0時。なぜ、この時間なのかは不勉強なので知りません(誰か教えて)が、要するにシステムの利用が少ないタイミングだろうなとは思います。昔は今日の様に世界中からひっきりなしにアクセスされるなんてことは想定されてなかったはずの時代ですからね。
で、Mac OS Xもこの時間でself maintenance が行われています。が、Mac OS Xをつかっているかたの大多数は、こうした時間、Mac を終了させているか、スリープさせているのではないかと。結果的に、systemのself maintenaceはつかわれないまま。そしてオーナーである人間が、がんばってメンテナンスをしたりする訳です。まぁ、コンピュータいぢりはそれが楽しいというのもありますがね。
とはいえ、せっかくなので、この仕組みをつかいましょう。

時間を変える

self maintenance が実行される時間に、コンピュータが動いていればよいのですが、その時間にコンピュータを起動させておくよりは、ご自身の活動時間にあわせて実行時間を変更させた方がいい。self maintenance が実行されるときに負荷なんて、無視出来るほど今となっては小さい。それよりも確実に使っている時間を指定する。例えば普段、仕事を始めた15分後とか。そんな感じで。
修正するファイルは次の3つ。
    • /System/Library/LaunchDaemons/com.apple.periodic-daily.plist
    • /System/Library/LaunchDaemons/com.apple.periodic-monthly.plist
    • /System/Library/LaunchDaemons/com.apple.periodic-weekly.plist
毎日のもの、毎月のもの、毎週の物ということ。これらのファイルをProperty List Editor.appなどで編集して、時間を書き換えます。24時制ね。
このファイルは、rootというシステムユーザしか書き換え出来ないので、一旦デスクトップにコピーして、それを編集して、元の物と入れ替えるってことをします。で、さらに、このファイルの所有者とグループ、アクセス権が変わってしまうので、システムがこのファイルを無視する様になります。なので、これを修正するために、

$ sudo chown 0:0 /System/Library/LaunchDaemons/com.apple.periodic-*

ってしておく必要があります。どうしてもコマンドラインはヤダという方は、ディスクユーティリティで、アクセス権の修正を実行してください。直してくれます。

それから、ログファイルの更新のタイミングね。/var/log/system.logと/var/log/wtmpというファイルだけなんだけど。これらは、/etc/newsyslog.confに設定があります。

これも、
/var/log/system.log 640 7 * @T00 J
/var/log/wtmp 644 3 * @01T05 B
/var/log/system.log 640 7 * @T12 J
/var/log/wtmp 644 3 * @01T12 B
って、書き換えると、正午にログファイルを更新してくれるようになります。/etc/newsyslog.confは所有者もread-onlyなファイルなんだけど、所詮テキストファイルなんで、適当な方法で書き換えは可能です。共有マシンではなく、個人マシンなのでその辺は深く考えなくていいしね。

で、self maintenance って何してるのか?それは、/etc/periodic の中にいろいろありますが、それはまたの機会に。



Comments