FreeBSD - newsyslog・crontab - newsyslog 基本

 クラウディア
1. 概要
2. ログファイル名
3. 所有ユーザ名・グループ名
4. 権限
5. 世代数
6. サイズ
7. タイミング
8. 保存形式
9. pid ファイル名・シグナル

1. 概要

 「FreeBSD 11.1 RELEASE」の。

/etc/newsyslog.conf
 のデフォルトの状態です。

# configuration file for newsyslog
# $FreeBSD: releng/11.1/etc/newsyslog.conf 266463 2014-05-20 03:00:20Z bdrewery $
#
# Entries which do not specify the '/pid_file' field will cause the
# syslogd process to be signalled when that log file is rotated.  This
# action is only appropriate for log files which are written to by the
# syslogd process (ie, files listed in /etc/syslog.conf).  If there
# is no process which needs to be signalled when a given log file is
# rotated, then the entry for that file should include the 'N' flag.
#
# The 'flags' field is one or more of the letters: BCDGJNUXZ or a '-'.
#
# Note: some sites will want to select more restrictive protections than the
# defaults.  In particular, it may be desirable to switch many of the 644
# entries to 640 or 600.  For example, some sites will consider the
# contents of maillog, messages, and lpd-errs to be confidential.  In the
# future, these defaults may change to more conservative ones.
#
# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/all.log                        600  7     *    @T00  J
/var/log/amd.log                        644  7     100  *     J
/var/log/auth.log                       600  7     100  @0101T JC
/var/log/console.log                    600  5     100  *     J
/var/log/cron                           600  3     100  *     JC
/var/log/daily.log                      640  7     *    @T00  JN
/var/log/debug.log                      600  7     100  *     JC
/var/log/init.log                       644  3     100  *     J
/var/log/kerberos.log                   600  7     100  *     J
/var/log/lpd-errs                       644  7     100  *     JC
/var/log/mail/maillog                   644  365   *    @T00  JC
/var/log/messages                       644  5     100  @0101T JC
/var/log/monthly.log                    640  12    *    $M1D0 JN
/var/log/pflog                          600  3     100  *     JB    /var/run/pflogd.pid
/var/log/ppp.log        root:network    640  3     100  *     JC
/var/log/devd.log                       644  3     100  *     JC
/var/log/security                       644  10    100  *     JC
/var/log/sendmail.st                    640  10    *    168   BN
/var/log/utx.log                        644  3     *    @01T05 B
/var/log/weekly.log                     640  5     *    $W6D0 JN
/var/log/xferlog                        600  7     100  *     JC

<include> /etc/newsyslog.conf.d/*
<include> /usr/local/etc/newsyslog.conf.d/*
 「newsyslog」は、起動されるたびに「newsyslog.conf」を参照しなおします。  なので、特に何かを再起動させなくても、「newsyslog.conf」を書き換えておけば、最短1分後には、反映させることが出来ます。  以下、「newsyslog.conf」の記述方法を簡単に説明します。
2. ログファイル名

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
  ↑
 ローテーションさせるログファイル名です。
3. 所有ユーザ名・グループ名

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
						↑
 ログファイルを所有するユーザ名とグループ名です。  省略可能。省略した場合は「root:wheel」になります。
4. 権限

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
										↑
 ログファイルの、ファイルのパーミッション (owner, group, world に対する read, write, execute 権限) を示します。  「chmod」で指定するアレです。
5. 世代数

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
											 ↑
 バックアップファイルのバージョン最大数です。  「3」と書いておけば、「.0」~「.3」までのバックアップファイルができることになります。  数が小さいものほど最新のバックアップファイルになります。  最大数を超えたファイルは、自動的に削除してくれます。
6. サイズ

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
													↑
 ファイルがこの値を超える値になったらローテーションさせるということを示しています。  単位は、「kb(キロバイト)」です。  「*」を指定しているとサイズのチェックは行いません。
7. タイミング

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
														↑
 いつローテーションさせるかというタイミングの指定です。  指定方法は、多数あります。  「*」は時間的なタイミングではローテーションしないという意味です。  単に数字を書けば時間を意味し、「168」と書けば、「168÷24」→「7」ですから、最後にローテーションされた日から1週間後にローテーションさせるという意味です。  「@T00」は、毎日午前「0:00」にローテーションさせるという意味です。  「@01T05」は、毎日午前「1:05」にローテーションさせるという意味です。  「$W6D0」は、毎週土曜日の午前「0:00」にローテーションさせるという意味です。  「$M1D0」は、毎月1日の午前「0:00」にローテーションさせるという意味です。  「$」で指定するのが便利な使い方で、「M」を指定すると毎月になりその後に続く数字が日付になります。  「W」は毎週で、「0」が日曜日で「6」の土曜日まで指定できます。  「D」はその日の時刻で「0」~「23」の範囲で指定できます。  単に、数字で「1」と書けば、1時間おきにローテーションさせます(まだ、他の書き方を知らない)。
8. 保存形式

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
																↑
 バックアップファイルの保存形式を指定します。  いずれか1つを指定するかまたは複数の指定を組み合わせることもできます。  わたしが使用する主な指定
記号     意味    
B バイナリもしくはその他の形式。「※1
C ファイルが存在しない場合は作成します。
G 直訳すると『指定した logfile_name がシェルパターンであることを示し、このパターンにマッチする全ファイル名を newsyslog(8) がアーカイブすることを意味します。』って書いてあるんですが、わかりにくいですよね?「※2
J bzip2 形式で圧縮します。
X xz 形式で圧縮します。
Z gzip 形式で圧縮します。
- 何も指定しませんが、以降に何か記述する必要があります。

 ※1 ローテーション時のメッセージ
ログファイルがテキストファイルでバックアップファイルが圧縮形式のようなとき、「B」を指定していなければローテーションして新規に作成するログファイルの先頭にローテーションした旨のログを出力します。
これが書き込まれると後でログの解析で不便になることがある場合は、テキストファイルであっても「B」を指定します。
下記は「/var/log/messages」の例です。


Feb 28 10:00:00 ns newsyslog[16869]: logfile turned over due to size>100K
 ※2 パターンマッチ
直訳だとわかりにくいですが、ディレクトリに複数のログファイルがあるときに、「*.log」の形式でワイルドカードを指定できます。

9. pid ファイル名・シグナル

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
																		↑
 プロセス「ID」を調べるために読むファイルを指定します。  このフィールドが存在する場合、このファイルに書かれたプロセス「ID」に「signal_number」が送られます。  正しく認識するために、このフィールドは「/」から開始する(つまり、絶対ディレクトリ)必要があります。  例えば、「apache」の場合は、ログファイルがローテーションされて「rename」されても最初につかんだファイルにずっとログを書き続けます。  なので、シグナルを送って「apache」を再起動させる必要がありますので、ここを指定します。
ハイスピードプラン【usus ウズウズ】