FreeBSD QandA 405
Q. /etc/newsyslog.conf を編集して httpd 等のログをローテーションしようと
しましたが、ローテーション後も名前が変更された古いファイルにログが
出力されつづけます。
A. 一般的な UNIX では、プロセスがファイルをオープンしているときに
そのファイルのリネームを行った場合、プロセス側からは引続きリネーム
後のファイルをオープンしているように動作します。
newsyslog(8) はログローテーションを行った後に syslogd(8) に HUP
シグナルを送ることで、ローテーションを行ったことを伝えるように
なっています。よって、syslogd を利用しているデーモンならば
ローテーション後に新しいログファイルにログが出力されるはずです。
もし syslogd を使わず独自でログファイルに記録しているデーモンが
あるなら、そのデーモンのプロセス ID が書かれているファイル (pid
ファイル) を /etc/newsyslog.conf に指定することで、そのデーモンに
HUP シグナルが送られるようになります。
また、
- pid ファイルがない
- HUP シグナルを送ってもログローテーションを認識しない
というデーモンの場合でも、logger(1) によって syslogd に送るという
手もありますので、うまく工夫すれば newsyslog で処理することができます。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。