Linuxで「削除」されたが、まだ使用されているファイルのリポジトリを回復する方法は?

Linuxで「削除」されたが、まだ使用されているファイルのリポジトリを回復する方法は?
SERVER:~ # df -mP /home/
Filesystem         1048576-blocks      Used Available Capacity Mounted on
/dev/mapper/rootvg-home_lv       496       491         0     100% /home
SERVER:~ # 
SERVER:/home # lsof | grep -i deleted | grep -i "home" | grep home
badprocess   4315     root  135u   REG      253,2   133525523      61982 /home/username/tr5J6fRJ (deleted)
badprocess2  44654     root  133u   REG      253,2   144352676      61983 /home/username/rr2sxv4L (deleted)
...
SERVER:/home # 

ファイルは使用中に削除されます。だから彼らはまだスペースを消費します。しかし、私たちは「badprocess *」を再起動したくありません。オペレーティングシステムはSLES9ですが、「一般条件」について質問します。

質問:スペースを解放するために削除されたファイルを保存したプロセスを再起動せずに削除する方法は?

答え1

の項目を使用して、/procこれらのファイルを切り捨てることができます。

# ls -l /proc/4315/fd

これにより、プロセス4315で開かれたすべてのファイルが表示される。すでに使用しており、lsof削除されたファイルはファイル記述子135として表示されるため、次のように削除されたファイルが使用するスペースを解放できます。

# > /proc/4315/fd/135

ファイル記述子133を持つプロセス44654によって開かれた他の削除されたファイルにも同様に適用されます。

# > /proc/44654/fd/133

これでスペースが解放されたことがわかります。

また、削除されたがプロセスによってまだ開いているファイルの内容をコピーするためにも使用できますcp /proc/XXX/fd/YY /some/other/place/filename

答え2

badprocessデバッグまたはそのptrace()ツールを使用してプロセスを操作し、特定のファイルを閉じる他のツールを使用せずにこれを行う方法はないと思います。

あなたのタイトルはロックについて話していますが、質問の本文にはロックを言及していません。いずれにしても、プロセスがファイルのロックを放棄するように強制する方法はありません。これは、ファイルがファイルシステムにまだリンクされているかどうかに関係なく適用されます。

関連情報