sudo rm -rf --no-preserve-root / と sudo rm -rf /*

sudo rm -rf --no-preserve-root / と sudo rm -rf /*

私たち全員が知っているように、これらは両方ともマシンに自殺を指示する2つの致命的なUNIXコマンドです。しかし、2つの違いは何ですか? 1つ目はルートディレクトリを削除し、2つ目はその中のすべてを削除します。どちらも同じように悪いですが、最初はルートディレクトリ自体を削除してファイルシステムを削除しますか?違いは何ですか?

ベストアンサー1

rm -r dirと同じ違いがありますrm -r dir/*

2番目は、globに一致するすべてのファイルを削除します。通常、名前はドットで始まらないすべてのファイルですが、bashやその他の項目で構成できます。次の場合でも失敗します。場所コマンドラインにはあまりにも多くのファイルしか含めることができないため、ディレクトリ内のファイルの数です。通常、ルートディレクトリには何もありませんが、まだあります。

最初は繰り返しでdirすべてを削除し、ディレクトリ自体を削除します。しかし、言ったように、ルートディレクトリは削除できません。 Linuxで発生するエラーは、Device or resource busyマウントされたファイルシステムを含むディレクトリを削除しようとしたときに発生するエラーとまったく同じです。 (削除する前にディレクトリが空であることを確認する必要はありません。)

同じ理由で、通常はルートディレクトリを空にすることはできません。Linuxでは、同じエントリがインストールされており、それらを/proc削除せずに/sysマウントポイントを削除することはできません。


厳密に言えば、すべてのファイルを削除してもシステムがシャットダウンされるわけではありません。単に外部プログラムを実行して、使用するのがより難しくなる一般的なパラダイムを作成するだけです。ただし、ファイルシステムにファイルが必要なくなったプログラムの実行には影響しません。また、busybox統合されたrmシェルなどを使用して試してみることもできますls。 (起動ファイルがマウントされたファイルシステムにある場合は、次回の起動が困難になる可能性があります。)

おすすめ記事