Solaris 資料一覧

OS標準のログローテートの仕組みを利用する方法(Solaris10)

2008/7/14更新

対応バージョン: 10

Solaris10では従来から提供されている/usr/lib/newsyslogというログローテート用スクリプトに変えてlogadmというツールを使用する。

このツールをオプションなしで実行すれば設定ファイルである/etc/logadm.confを読み込んでログのローテートを行い、オプション付で実行すれば同設定ファイルに対してローテートの設定が行われる。

まずオプションなしの場合は任意の時点で手動実行可能であり、rootのcronでは毎日3:10に実行されるように設定されている。

# crontab -l
:
10 3 * * * /usr/sbin/logadm
:

次にオプション付の場合はログローテートの細かい指定とともに実行し、設定が/etc/logadm.confに書き込まれる。

例えば/var/log/foo.logというログファイルを100KBに達する毎にローテートし、履歴を5世代分保存するには以下のようにする。ローテート後にsyslogデーモンにHUPシグナルを送らないと新しいログファイルが使用されないので注意が必要である。

# logadm -w /var/log/foo.log -s 100k -C 5 -a 'kill -HUP `cat /var/run/syslog.pid`'

履歴ファイルにはfoo.log.0, foo.log.1, ...という形で後ろに数字が付加されていく。

-rオプションとともにファイル名を指定するとそのファイルに対する設定が/etc/logadm.confから削除される。

# logadm -r /var/log/foo.log

主なオプションは以下のとおり。

-w <ファイル>

ローテート対象ファイル

-s <サイズ>

ローテート対象となるファイルサイズ(b,k,m,g等の単位で指定)

-p <期間>

ローテートするタイミング(h,d,w,m,y等の単位で指定)

例)

-p 1h (1時間毎)
-p 1d (1日毎)
-p 1w (1週間毎)
-p 1m (1ヶ月毎)
-p 1y (1年毎)
-C <保有履歴>

履歴管理する世代数

-a <処理>

ローテート後に実行する処理

例) syslogデーモンにHUPシグナルを送る

-a 'kill -HUP `cat /var/run/syslog.pid`'
-b <処理>

ローテート前に実行する処理

-R <処理>

履歴ファイルに対する処理

-E <処理>

履歴対象から外れ、削除対象となったファイルに対する処理

例) 対象ファイルを圧縮して別ディレクトリに移動する

-E 'gzip $file ; mv $file.gz /var/log/old'

(*) $fileには対象ファイル名が入る

関連資料・記事