現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Solaris 9以降で変更されたログローテーションの動作と設定方法について解説します。
これまでSolaris 8を管理してきましたが、Solaris 10に移行することになりました。/var/adm/messagesのローテーションの方法がSolaris 9以降変わったと聞いたのですが、具体的にどのように変更されたのでしょうか? また、ローテーション条件はどのように変更するのでしょうか?
Solaris 8までは、/usr/lib/newsyslogというシェルスクリプトをcronで定期的に実行することで、/var/adm/messagesのローテーションを行っていました。Solaris 9以降は、newsyslogの代わりに/usr/sbin/logadmコマンドを使用するようになり、ローテーションの動作と設定方法が変更されています。それぞれ比較してみましょう(リスト1)。
毎週日曜日の3時10分に次の動作を行う
毎日3時10分に、messagesが空ではなく、かつ、1週間以上経過している場合、次の動作を行う
Solaris 8以前とSolaris 9以降では、ローテーションの動作が変わっているのが分かります。Solaris 8以前では、日曜日に必ずローテーションが発生するのに対し、Solaris 9以降では、ログが空であればローテーションされませんし、必ずしも日曜日に実行されるわけではありません。
Solaris 8以前のnewsyslogは、ログローテーション用シェルスクリプトとなっています。ローテーション条件の変更が必要な場合は、newsyslogを直接編集し、実行されるタイミングはcronで設定します。
Solaris 9以降では、logadmコマンドの設定およびローテーションの対象となるファイルは、/etc/logadm.confに記述されています。よって、ローテーションのルールを変更する際はlogadm.confを編集し、ローテーションのタイミングはcronで設定します。
主要なオプションは表1のとおりです。これ以外のものについては「logadm -h」もしくは「man logadm」を参照してください。
オプション | 機能 |
---|---|
-C | ログを残すカウント回数。この数だけリネームしてログを残す。特に指定のない場合、標準で10になる |
-P | ログをローテーションした最終日時。最後にログをローテーションした日時になる。もし、logadmを実行してもログがローテーションされなければ日時は変化しない |
-a | ログをローテーションした後に実行するコマンド |
-b | ログをローテーションする前に実行するコマンド |
-s | ファイルサイズ。ログファイルの容量が指定サイズより大きい場合、ローテーションを行う。単位はb(バイト)、k(キロバイト)、m(Mバイト)、g(ギガバイト)で指定する。デフォルトは1b |
-p | 期間。指定期間を経過した場合、ログファイルのローテーションを行う。単位はd(日)、h(時間)、w(週)、m(月)、y(年)で、デフォルトでは1wとなっている。また、特殊オプションとしてnowとneverが指定できる。nowは、logadmが実行された時点でログをローテーションし、neverは一切ローテーションを行わない。このオプションはほかの条件オプションより優先される。例えば、「-s」オプションのデフォルト設定1bを満たさない空ファイルでも、nowが指定されている場合、ローテーションされる |
-t | テンプレート。ローテーションするファイルのリネーム名を指定する。標準では$file.$n(元のファイル名.数字)になる |
messagesの場合、デフォルトではリスト2のように/etc/logadm.confに記述されています。また、「-s」、「-p」、「-t」といったオプションが省略されているため、次のようにそれぞれのデフォルト設定が適用されます。
以上のように、/etc/logadm.confでオプションを指定することで、messagesやそのほかのログファイルのローテーション管理を行えます。
Copyright © ITmedia, Inc. All Rights Reserved.