トップ «前の日記(2011/06/19 (日) ) 最新 次の日記(2011/06/21 (火) )» 編集 RSS feed

HsbtDiary


2011/06/20 (月) [長年日記]

Lightweight Language Planets

申し込みが始まったようなのでTシャツ付きのチケットを購入done.

[logrotate] プロセスが掴みっぱなしの log ファイルを消す

今日、某Webサイトのディスク使用量が100%になっていて調べてみたら logrotate の設定忘れで log が5GBとかになっていたりしたので sudo rm してみたんだけど、ファイルが無くなってもディスク使用量が変化しない現象に遭遇してしまった。

これは起動中のプロセスが書き出すログファイルを掴みっぱなしによるものらしい(ファイルディスクリプタとかそういう話かな?)、こういう時は

kill -HUP

シグナルを起動中のプロセスに送りつけるとファイルを解放するみたいだよ。

現象と解決策がわかっただけなので、後でもう少しちゃんと調べること→オレ

本日のツッコミ(全3件) [ツッコミを入れる]
# みわ (2011/06/21 (火) 00:12)

ちょうど昨日その辺を勉強したところです。この辺り Manpage of UNLINK http://linuxjm.sourceforge.jp/html/LDP_man-pages/man2/unlink.2.html

# かずひこ (2011/06/21 (火) 01:19)

ログ開きなおしのためのシグナルは、SIGHUPでいけるソフトウェアが多いのは事実ですが、(その用途に限らず)どのシグナルでどんな挙動をするかは、それぞれのソフトウェア依存です。<br>たとえばApache HTTPdなら、SIGUSR1を使うと、SIGHUPと比較して「進行中のコネクションは落ちないですむ」だったはず。

# しばた (2011/06/21 (火) 08:10)

>みわさん<br>お、ファイルディスクリプタであってましたね。<br><br>>かずひこさん<br>なるほど、ソフトウェア依存というのは確かにそんな感じがしますね。実行する前に適切なシグナルを調べておくべきですね。