プロセスが大量のログファイルを作成して削除しています。
削除された多くのファイル/proc/pid/fd
はディレクトリへのリンクを失いました。
プロセスでこれらのファイルハンドルを閉じる必要がありますか?これにより、壊れたリンクが表示されなくなります。次のコマンドを使用してファイル記述子の数を計算します。
ls /proc/<pid>/fd | wc -l
ベストアンサー1
プロセスでファイルが開いていてそのファイルが削除された場合は、ファイルが存在します。これは完全に正常な現象です。切断されたリンク自体は問題を示さない。/proc/PID/fd
プログラムが多数のファイルを開いたままにしても何もしない場合は、プログラムにバグがあることを示すことができます。削除されたファイルを開いたままにする方法はいくつかありますが、ログファイルには意味がないため、これらのファイルが実際にログファイルの場合はプログラムにバグがある可能性があります。これを修正するには、プログラムの作成者に連絡する必要があります(ソースコードがある場合は直接変更できます)。
このプロセスでは対処できません/proc
。デバッガをプロセスに接続してファイルを閉じるようにできますが、結果は保証されません。これは屋根の上に登る人のはしごを取り除くのと同じです。倒れて重傷を負う可能性が高いです。ディスク容量を回復するには、次のようにファイルを切り取ることができます/proc
。シェルコマンドはこれを行います。プログラムがファイルに書き込みを続けると、ディスク領域の再利用が開始されます。これを防止する1つの方法は、デバッガを使用してプロセスを開いたファイル記述子として指定することです。しかし、結果は保証されません。: >/proc/PID/fd/NUMBER
dup2
/dev/null