FreeBSD QandA 406
Q. 次のようなスクリプトで routed のログファイルをローテーションしよ
うとしましたが、ローテーション後も名前が変更された古いファイルに
ログが出力されつづけます。
#!/bin/sh
cd /var/log
mv routedlog routedlog.0
cp /dev/null routedlog
chmod 644 routedlog
kill -1 routedのPID
A. routed(8) は SIGHUP を受けても (kill -1 をしても)、オープン中のログ
ファイルを切替えません。このような場合、次のようにいくつかの方法があり
ます。
A1. 一旦 routed を殺し、ログファイルをローテーションさせてから再起動し
ます。これが最も一般的です。
A2. routed 起動時に logger(1) を経由して syslogd(8) にログを送るように
して、newsyslog(8) でローテーションさせます。こうすればログファイルの
管理が楽です。
A3. ローテーションを次のコマンドで行います。(これは裏技に近いので、う
まくいくか様子を見た方がいいかも知れません。)
cp -p routedlog routedlog.0
cat /dev/null > routedlog
A4. FreeBSD ユーザたるもの routed のソースを読んで SIGHUP を受けた時に
ログファイルを切替える動作を加えてしまいましょう。更にこのパッチを公開
してしまえば、みんなは幸せ、あなたは人気者になれるかも知れません。
(routedの場合に限らずこのような精神を大切にしましょう。)
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。