2009年2月4日水曜日

[Linux]openしているプロセス情報を表示する

どうも、俺です。

今扱っているWEBシステムで、セッションファイルとApacheのアクセスログを/tmpではなく/tmpfsとしてメモリ上に保存しています。

ある日/tmpfsが上限の900MBに達してしまい、「こりゃヤバイ!」ということで600MB程あるApacheのアクセスログをローテートさせたのですが、/tmpfsの使用容量はほとんど変わりません。
# df
Filesystem 1K-blocks Used   Available Use% Mounted on
/tmpfs    921600   873120 48480   95%  /tmpfs
実は、Apacheアクセスログをローテートさせた時に再起動も行っているのですが、
とある子プロセスがゾンビとなり、access_logへのポインタを保持し続けていたようです。
なので
# ls -l /tmpfs
としても出てこないのですが、古いaccess_logが/tmpfs上に残っていたようです。

# /usr/sbin/lsof | grep deleted
とすれば、本来であればあるはずのないaccess_logが出てきました。

あとはそのプロセスをkillして万事解決です。
しかし、なんでApacheの子プロセス残っちゃったのか調べないとな~。。。

0 件のコメント: