この広告は、90日以上更新していないブログに表示しています。
以前の記事で、daemon
コマンドを使うとシェルスクリプトとかを簡単にデーモンとして常時稼働させられるねーこれ便利ねーみたいな話を書きました。
認証エラーログを見て ipfw で ban するやつ - ほっしーの技術ネタ備忘録
そのデーモン化したいプログラムから stdout とかに出力したデータをファイルに残しておく話です。
やり方は簡単でdaemon
の引数に-o /var/log/hoge_console.log
とか書くだけ。簡単ですね。
ただ、これだとログファイルが延々と増え続けて死にます(ストレージが)。…いやイマドキなら死なないかな?
そんなときに使うのはもちろん、newsyslog
ですね。/etc
とか見てると、イマドキは.d
なディレクトリに設定ファイルを書くのが主流っぽいですね?
という訳で、/usr/local/etc/newsyslog.conf.d/
に適当なファイル名+.conf
で設定ファイルを書きます。こんな1行。
/var/log/hoge_console.log root:wheel 644 10 100 * CEXp /var/run/hoge.pid
先頭はさっきdaemon
の-o
に渡したファイル名。たぶんフルパスじゃないと死にそう。
で、ポイントになるのはオプションCEXp
の後ろにdaemon
の PID ファイル名を書くこと。これでローテートを行うときにSIGHUP
を送ってくれます。
なので、対応するようにdaemon
の引数には-H -P /var/run/hoge.pid
を追加します。-H
を付けるとdaemon
がSIGHUP
を受け取ったときにこのファイルを開きなおします。あと、似た引数で-p
だと子プロセス(daemon
から起動する方)の PID が書かれるので間違えないこと。
間違うとローテートしてからのログが消滅したりして悲しいことになります。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。