Solaris9 でログローテーション




Solaris9 のデフォルトでは、logadmを使用してログをローテーションしている。

cron を確認すると、logadm が定期的に実行されていることが分かる。

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

/usr/sbin/logadm ファイル自体はバイナリファイルで、
/etc/logadm.conf に基づいて動作する。

デフォルトの /etc/logadm.conf は次の通り。

/etc/logadm.conf
# Copyright 2001-2002 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident  "@(#)logadm.conf        1.2     02/02/13 SMI"
#
# logadm.conf
#
# Default settings for system log file management.
# The -w option to logadm(1M) is the preferred way to write to this file,
# but if you do edit it by hand, use "logadm -V" to check it for errors.
#
# The format of lines in this file is:
#       <logname> <options>
# For each logname listed here, the default options to logadm
# are given.  Options given on the logadm command line override
# the defaults contained in this file.
#
# logadm typically runs early every morning via an entry in
# root's crontab (see crontab(1)).
#
/var/log/syslog -C 8 -P 'Fri May 18 18:10:00 2007' -a 'kill -HUP `cat /var/run/syslog.pid`'
/var/adm/messages -C 4 -P 'Fri May 11 18:10:00 2007' -a 'kill -HUP `cat /var/run/syslog.pid`'
/var/cron/log -c -s 512k -t /var/cron/olog
/var/lp/logs/lpsched -C 2 -N -t '$file.$N'
#
# The entry below is used by turnacct(1M)
#
/var/adm/pacct -C 0 -N -a '/usr/lib/acct/accton pacct' -g adm -m 664 -o adm -p never
/var/log/poplog -C 14 -P 'Fri May 18 18:10:00 2007' -a 'kill -HUP `cat /var/run/syslog.pid`'

次のようなフォーマットに基づいて記述されている。

ローテーション対象ファイル オプション

オプションとして次のようなものがある。

C:ローテーションした後保持する世代
A:ローテーションした後保持する時間
    h:時 d:日 w:週 m:月 y:年
a:ローテーションした後に実行するコマンド
p:ローテーションの間隔
    d:日 w:週 m:月 y:年 now:今すぐ never:しない
      例. 1d
P:タイムスタンプ 最後にローテーションした日時

試しに /var/log/syslog を 「-p 1d」 を付けてローテーションしたところ、
/etc/logadm.conf の /var/log/syslog の行に -P の記述が追加された。
その日付は、実行した時間の 12 時間前の日時だった。

その後、続けて logadm を実行したがローテーションされなかった。
-P の日時から 1 日が経過していないため。

/etc/logadm.conf の -P を削除して再度実行したところ、
すぐにローテーションされた。