連載
» 2008年08月07日 02時31分 UPDATE

UNIX処方箋:Solaris 8以前と9以降のログローテーション設定の違い

現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、Solaris 9以降で変更されたログローテーションの動作と設定方法について解説します。

[ITmedia]
80x80_1_solaris.jpg

これまでSolaris 8を管理してきましたが、Solaris 10に移行することになりました。/var/adm/messagesのローテーションの方法がSolaris 9以降変わったと聞いたのですが、具体的にどのように変更されたのでしょうか? また、ローテーション条件はどのように変更するのでしょうか?


80x80_2.jpg

Solaris 8までは、/usr/lib/newsyslogというシェルスクリプトをcronで定期的に実行することで、/var/adm/messagesのローテーションを行っていました。Solaris 9以降は、newsyslogの代わりに/usr/sbin/logadmコマンドを使用するようになり、ローテーションの動作と設定方法が変更されています。それぞれ比較してみましょう(リスト1)

Solaris 8以前

毎週日曜日の3時10分に次の動作を行う

  1. messages.2が存在すれば、messages.3へリネーム
  2. messages.1が存在すれば、messages.2へリネーム
  3. messages.0が存在すれば、messages.1へリネーム
  4. messagesが存在すれば、messages.0へリネーム
  5. 空ファイルmessagesを作成し、属性を644に変更

Solaris 9以降

毎日3時10分に、messagesが空ではなく、かつ、1週間以上経過している場合、次の動作を行う

  1. messages.2が存在したら、messages.3へリネーム
  2. messages.1が存在したら、messages.2へリネーム
  3. messages.0が存在したら、messages.1へリネーム
  4. messagesが存在したら、messages.0へリネーム
  5. 空ファイルmessagesを作成。messagesのオーナー、グループ、属性はリネーム前のmessagesに従う

リスト1 Solaris 8とSolaris 9のログローテーション設定(messagesの場合のデフォルト)

 Solaris 8以前とSolaris 9以降では、ローテーションの動作が変わっているのが分かります。Solaris 8以前では、日曜日に必ずローテーションが発生するのに対し、Solaris 9以降では、ログが空であればローテーションされませんし、必ずしも日曜日に実行されるわけではありません。

設定方法

 Solaris 8以前のnewsyslogは、ログローテーション用シェルスクリプトとなっています。ローテーション条件の変更が必要な場合は、newsyslogを直接編集し、実行されるタイミングはcronで設定します。

Solaris 9以降

 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(元のファイル名.数字)になる
表1 logadmコマンドのオプション

/etc/logadm.confの記述例

 messagesの場合、デフォルトではリスト2のように/etc/logadm.confに記述されています。また、「-s」、「-p」、「-t」といったオプションが省略されているため、次のようにそれぞれのデフォルト設定が適用されます。

  • -s = 1b(ファイルサイズが1バイト以上)
  • -p = 1w(ファイルの経過時間が1週間以上)
  • -t = $file.$n(「元のファイル名.数字」でリネーム)

 以上のように、/etc/logadm.confでオプションを指定することで、messagesやそのほかのログファイルのローテーション管理を行えます。

リスト2 logadm.confのデフォルト設定(messagesの場合) リスト2 logadm.confのデフォルト設定(messagesの場合)

関連キーワード

UNIX処方箋 | Solaris | バックアップ


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

ピックアップコンテンツ

- PR -

注目のテーマ

マーケット解説

- PR -