NEWSYSLOG(8)

名称
newsyslog - システムのログファイルを保守し、適切なサイズに保つ

書式
newsyslog [-Fnrv] [-f config_file] [-a directory] [file ...]

解説
newsyslog ユーティリティは cron(8) から定期的に実行されるようにスケジュールされるべきプログラムです。 実行されると、 newsyslog は必要に応じてログファイルを保存 (アーカイブ) します。 あるログファイルを保存する必要があると判断すると、 “logfile” が空になり、 “logfile.0” に前回のログファイルが入り、 “logfile.1” に前々回のログが入り‥‥ といった具合に、 ユーザが指定した数の保存ログが残るよう、 newsyslog はファイルを再編します。 オプションにより、保存ログを圧縮してスペースを節約することもできます。

ログが保存されるのは次の 3 つの場合です:

1.  ログが設定サイズ (キロバイト単位で指定) より大きくなった。

2.  前回ログを保存してから指定した時間が経過した。

3.  ログ入れ替えを行う指定時間になった。

newsyslog の粒度は、このコマンドが cron(8) からどの程度の頻度で実行されるかに依存しています。 newsyslog の実行は十分速いので、毎時間実行するようにスケジュールしても 悪影響はありませんし、 第 3 のモード (前述) はそうなっていることを仮定しています。

起動されると、 newsyslog は設定ファイルを読み込んで、 どのログファイルが潜在的に保存されうるかを決定します。 デフォルトでは、この設定ファイルは /etc/newsyslog.conf です。 設定ファイルの各行には、 newsyslog が処理すべき特定のログファイルに関する情報を記述します。 各行は 5 つの必須フィールドと、4 つのオプションフィールドからなり、 それらは空白で区切られています。 空行や ``#'' で始まる行は無視されます。 ``#'' が行の途中にある場合、 ``#'' 文字とこの後の行の残りは無視されます。 この特殊な意味を避けるために、``#'' を ``\'' でエスケープ可能です。 この場合、前の ``\'' は削除され、``#'' は通常文字として扱われます。 設定ファイルの各フィールドは以下の通りです:

logfile_name
    保存するシステムログファイル名。

owner:group
    このフィールドはオプションであり、 保存ファイルの所有者とグループ名を指定します。 owner あるいは group が空白のままである場合でも ":" は必須です。 指定は数値、あるいは /etc/passwd か /etc/group にある名前で行います。

mode
    ログファイルと保存ログファイルのモードを指定します。

count
    ログファイルそのものに加えて保存しておく保存ファイルの数を指定します。

size
    ログファイルのサイズが size キロバイトに達すると、ログファイルは上記のように入れ換えられます。 このフィールドがアスタリスク (‘*’) で置き換えられると、ログファイル入れ換えに際して そのサイズは考慮されなくなります。

when
    when フィールドは、インターバル、特定の時刻、もしくは両方です。 when フィールドがアスタリスク (‘*’) の場合、ログ入れ替えは size フィールドにのみ依存します。 そうでない場合、 when フィールドは、オプションの、時間単位のインターバルからなります。 これに続けて、単一の ‘@’ 記号と制限された ISO 8601 フォーマットで時刻を指定することもできますし、単一の ‘$’ 記号と時刻を指定し、日に 1 回か週に 1 回か月に 1 回の決まった時刻に ログファイルを入れ替えるように指定することもできます。

    時刻を指定すると、指定した時刻の 1 時間以内に newsyslog が実行された場合のみ、ログファイルを入れ替えます。 インターバル時間が指定された場合、 最後の入れ替えからその時間数が経過した場合に、ログファイルを入れ替えます。 時刻とインターバルの両方が指定された場合、入れ替えが実行されるには、 両方の条件が満たされることが必要です。

    タイムゾーンは指定できません。 現在の実装では、明確に分や秒の部分を指定することは、ほとんどできません。 「1 時間以内」であることのみ、比較するからです。

    ISO 8601 制限付時刻フォーマット

    制限付 ISO 8601 時刻の先行文字は ‘@’ 記号です。制約付 ISO 8601 フォーマットでの特定の時刻の指定は次の通りです: [ [ [ [ [ cc] yy] mm] dd] [ T [ hh [ mm [ ss]]]] ]です。 日付フィールドはオプションであり、デフォルトは現在の日付です。 時刻フィールドはオプションであり、デフォルトは午前 0 時です。 よって、今日が 1999 年 1 月 22 日の場合、次の日付指定はすべて同等です:

    ‘19990122T000000’
    ‘990122T000000’
    ‘0122T000000’
    ‘22T000000’
    ‘T000000’
    ‘T0000’
    ‘T00’
    ‘22T’
    ‘T’
    ‘’

    日・週・月の時刻フォーマット

    日・週・月の時刻フォーマットの先行文字は ‘$’ 記号です。 日・週・月の指定の特定のフォーマットはそれぞれ次の通りです: [Dhh], [Ww[Dhh]], [Mdd[Dhh]] 。 オプションの時刻フィールドのデフォルトは、午前 0 時です。 日と時間の指定の範囲は次の通りです:

    hh  時間であり、0 から 23 の範囲
    w   曜日であり、0 から 6 の範囲で、0 が日曜日
    dd  日であり、1 から 31 の範囲か、最終日を指定するための文字 L または l

    以下に例を示します:

    $D0 毎晩午前 0 時に入れ替えます (@T00 と同じです)
    $D23
        毎晩 23:00 に入れ替えます (@T23 と同じです)
    $W0D23
        毎週日曜日の 23:00 に入れ替えます
    $W5D16
        毎週金曜日の 16:00 に入れ替えます
    $M1D0
        毎月最初の日の午前 0 時に入れ替えます (その日の開始時点です; @01T00 と同じです)
    $M5D6
        毎月 5 日の 6:00 に入れ替えます (@05T06 と同じです)

flags
    このフィールドはオプションであり、 保存に際してログファイルに特別な処理を行うかどうかを指定します。 Z フラグを指定すると、スペース節約のために 保存ファイルは gzip(1) で圧縮されます。 J フラグを指定すると、スペース節約のために 保存ファイルは bzip2(1) で圧縮されます。 B フラグはファイルがバイナリファイルであることを指示し、 ログファイルが入れ換わったという意味で newsyslog が挿入する ASCII メッセージを含めないようにします。 - は何も意味しませんが、 path_to_pid_file フィールドが指定された場合には埋め草として使用可能です。 G フラグは、指定した logfile_name がシェルパターンであることを示し、 このパターンにマッチする全ファイル名を newsyslog がアーカイブすることを意味します。 文法とマッチ規則についての詳細は、 glob(3) を参照してください。

path_to_pid_file
    このオプションのフィールドは、 デーモンのプロセス ID を調べるために読むファイルを指定します。 このフィールドが存在する場合、 このファイルに書かれたプロセス ID に signal_number が送られます。 正しく認識するために、このフィールドは "/" から開始する必要があります。

signal_number
    このオプションフィールドは、 デーモンプロセスに送られるシグナル番号を指定します。 デフォルトで SIGHUP が送られます。

オプション
newsyslog では以下のオプションが利用できます:

-f config_file
    設定ファイルとして /etc/newsyslog.conf に代えて config_file を使用します。

-a directory
    アーカイブしたログファイルを書き込む directory を指定します。 相対パスを指定した場合、 これを各ログファイルのパスに後置したディレクトリに、 このログファイルのアーカイブログを書き込みます。 絶対パスを指定した場合、 すべてのアーカイブログは指定した directory に書き込まれます。 パス directory のコンポーネントが存在しない場合、 newsyslog が実行されるときに生成されます。

-v  newsyslog を詳細情報出力モードにします。 このモードでは、ログを入れ換えるあるいはそれをスキップするたびに、 そのログファイル名と理由を表示します。

-n  実際にログの入れ換えは行わず、このオプションが指定されない場合に 本来行うはずの処理内容を表示します。

-r  newsyslog は root として動作しなければならない、という制約を取り除きます。 もちろん、 newsyslog は syslogd(8) に HUP シグナルを送れなくなりますから、 このオプションはデバッグにのみ用いるべきです。

-F  ログを入れ替える条件に合致しないとしても、強制的に newsyslog にログを入れ替えさせます。 システムの問題を診断しているときには、 このオプションの使用により、 問題のみを含む新しいログを提供できるので有用です。

追加のコマンド行引数を指定すると、 newsyslog はこれらの引数にマッチするログファイルのみを検査します。 そうでない場合、設定ファイルに列挙された全ファイルを検査します。

関連ファイル
/etc/newsyslog.conf
    newsyslog の設定ファイル

バグ
セキュリティ侵害を見つけるためにログを自動的に読むことは、 まだ行っていません。

作者
Theodore Ts'o, MIT Project Athena

Copyright 1987, Massachusetts Institute of Technology

互換性
以前のバージョンの newsyslog ユーティリティは、グループ名の識別にドット (``.'') を使用していました。 FreeBSD 3.3 からは、これはコロン (``:'') 文字になりましたので、 ユーザ名とグループ名にドット文字を含めることが可能です。 後方互換性のために、ドット (``.'') 文字はまだ受け付けられます。

関連項目
gzip(1), syslog(3), chown(8), syslogd(8)