一部のファイルやフォルダを削除しようとしましたが、システムが再生成されたため、削除できませんでした。
これらすべてのファイルの名前は、任意の4桁の16進数で.nfsXXXX
指定されます。XXXX
ファイルのいずれかを削除するたびに名前は異なりますが、内容は同じ別のファイルが生成されます。
これは、関連していない複数のディレクトリで発生します。原因は何ですか?どうすれば解決できますか?
答え1
で文字通り引用https://uisapp2.iu.edu/confluence-prd/pages/viewpage.action?pageId=123962105:
Linux/unix では、現在実行中のプロセスでまだ開いているファイルを削除しても、そのファイルは実際には削除されません。プロセスがファイルを閉じると、オペレーティングシステムはファイルハンドルを削除し、ディスクブロックを解放します。開いて削除するファイルがNFSマウントファイルシステムにある場合、このプロセスは少し複雑です。ファイルを開くプロセスが1台のコンピュータ(オフィスや研究室のワークステーションなど)で実行され、ファイルがファイルサーバー上にあるため、両方のコンピュータにファイルに関する情報を渡す方法が必要です。 NFSがこれを行う方法は、.nfsNNNNファイルを使用することです。いずれかのファイルを削除しようとしていますが、ファイルがまだ開いている場合は別の番号で再表示されます。したがって、ファイルを完全に削除するには、そのファイルを開いたプロセスを終了する必要があります。
ファイルが開いているプロセスを知りたい場合は、「lsof .nfs1234」を使用できます。ただし、これはファイルを開いたプロセスを実行しているコンピュータでのみ機能します。したがって、プロセスがあるマシン(bobacなど)で実行され、別のBurrowマシン(siloやプレリドックなど)でlsofを実行している場合は、何も表示されません。
答え2
これらの.nfsXXXXファイルはNFS操作の一般的な部分です。 @Keith Thompsonが書いた内容を繰り返すことはありませんが、1つする必要があるのは、その項目をすぐに削除するのではなく、しばらくアクセスしていない場合は削除するようにcronジョブを設定することです。
find dir .name .nfs\* -atime +3 -delete
答え3
以前の答えでは十分ではありません。 AIXの問題は、ライブラリーを使用するプロセスがなくても、まだメモリーにロードできることです。この場合、nfs ファイルシステムからライブラリファイルを削除すると同じ問題が発生します。
これまで私が見つけた唯一の方法は、rootユーザーとして "slibclean"コマンドを実行して現在使用されていませんが、ロードされたライブラリをメモリからアンロードしてライブラリファイルを削除することです。
答え4
.nfsXXXX
別のオプションは、サーバー側からファイルを削除することです。