私は通常、ディレクトリ全体を一度に削除するためにrm -rf
。ディレクトリが大きいほど時間がかかることを確認しました(再帰計算)。
Unixシリーズシステムは、一定時間に実行されているディレクトリを削除する代替方法を提供しますか?現在アクセスできないコンテンツにまったく触れずにディレクトリを「直接」削除することが可能です。
ディレクトリ自体を削除するためにディレクトリの内容を再帰的に参照するファイルシステムのいくつかの特性がありますか?
ベストアンサー1
ディレクトリを削除するときは、その内容を繰り返し削除する必要があります。なぜですか?
簡単に言えば、「ディレクトリ」はペアリストを含むファイルであると言うことができます。 「ドライブのディレクトリブロックを解放」するとどうなりますか?
一般ファイルを削除することを考えてみましょう。プログラム(例えばrm
)はunlink()
システムコールを呼び出します。オペレーティングシステム(具体的にはファイルシステムドライバ)は、ハードリンク(filename
前の段落のディレクトリにある)の数を確認します。 0 でファイルが開いていない場合は、物理的に削除できます。このように、我々はファイルを削除する方法を知っています。
それでは、ディレクトリの削除をもう一度見てみましょう。ブロックを解放するだけで、その中にファイルは追加されず、unlink
ディレクトリ内のすべてのファイルのハードリンクカウンタは減少しません。サブディレクトリ、サブディレクトリなどのファイルに関する結論は何ですか?正確に言えば、unlink
削除できないファイルシステムにジャンクファイルをインポートしたくないので、削除されたディレクトリ内のすべてのファイルに対してこれを行う必要があります。
したがって、@SYNのソリューション(rm
バックグラウンドで実行)を使用できますが、一定時間にディレクトリを削除することはできません。