どのように 'rm -rf /'はシステム上のすべてのファイルを削除できますか?

どのように 'rm -rf /'はシステム上のすべてのファイルを削除できますか?

理解できない点rm -rf /:カーネルが削除された後に削除が完了するまで、ランタイムスタックを維持し、ファイルシステムやハードウェアと通信する/bin方法は?コマンドの開始時に必要なすべてのバイナリを静的に接続し、ファイルシステムディレクトリツリー全体をメモリにロードしていrmますか?rm

答え1

これは、ファイル名とファイルデータが別々であるためです。ファイルを削除すると、データ自体ではなくデータへの名前付き参照(ハードリンク)のみが削除されます。ファイルシステムのすべての参照が消えた場合、カーネルは引き続きデータを解放します。ただし、現在実行中のプロセスでファイルが開いていない場合にのみ適用されます。それまでは、ファイルが実際に削除されるのではなく、ファイル名では使用できなくなります。

答え2

カーネルファイルを削除するかどうかにかかわらず、カーネルはシャットダウン、再起動、または競合が発生するまで機能し続けます。

実行中のプロセスでも同様のことが起こります。最も一般的には、ELF実行可能ファイルの場合、すべての依存関係(実行中の特定の対応するファイルを表示できますldd $(which rm))がファイルシステムから仮想メモリシステムにロードされます。少なくともすべてのインスタンスが表示されるまで、メモリから解放されません。プロセスがロードされました。完璧。これが、ほとんどの実行可能ファイルとライブラリがホット置換できる理由です。

関連情報