Linux システムでは、特に削除するファイルがシステム ライブラリまたは実行ディレクトリにある場合、ファイルの削除は非常に危険な操作です。これらのファイルを削除すると、システムのクラッシュ、アプリケーション エラー、その他の重大な結果が発生する可能性があります。今日は、不要なリスクを回避するために、Linux システムでライブラリと実行ファイルを安全に削除する方法を紹介します。
一部のオペレーターやプログラマーが誤って間違った rm delete 関数を入力し、システムとデータベースが削除されたという事例をインターネットでよく目にします。逃走については、今日は編集者がこの削除と逃走について詳しく理解してもらうことにします。
最近、インターネット上で写真を見ました(元の写真の出所は不明ですが、タイトルの写真は元の写真を修正して転載したものです。)
非常に合理的だと感じます。ご存知のとおり、rm は削除を意味します。この単語はシンプルで覚えやすいです。rf にも「ジャンク ファイル」という説明があります。/* はディレクトリ内のすべてのファイルを表します。これで問題ありません。sudo はも利用可能です。権限が適切であることを確認してください。
いわゆるジャンク ファイルをクリーンアップするためにそのようなコマンドを実行する人はいるでしょうか?言わないでください、言うのは本当に難しいです。
私たちは Bash エイリアスに関する記事を頻繁に投稿しますが、一部の学生は常にエイリアス ls=rm -rf、エイリアス cd=rm -rf などの固有のエイリアスを「投稿」します。これらのコマンドに騙される人はほとんどいないと思いますが、多くの場合、誰もがこのコマンドを楽しんでいます。
この写真を友人のサークルに送信したところ、友人の「Long Shisan」は、これによりジャンク ファイルが削除されるだけでなく、ジャンク システム管理者も削除されると言っていました。
そうです、なぜこのようなジョークが何度も出てくるのでしょうか?それは、問題を理解しようとしない私たちの中には、問題に遭遇したときに、その原理を調べたり信頼性を検証したりすることなく、インターネットからコマンドの例をランダムに見つけて盲目的に試すことに慣れているからです。したがって、このようなジョークは実際には「システム管理者のジャンク」を排除するために使用されます。
それでは、上記のコマンドを調べて、ここにどれだけの知識があるかを見てみましょう。
rmに関するあれこれ
まず、このコマンドは、Linux システムのルート ディレクトリ (/) にあるすべてのファイルをクリアするために使用されます。 2 つのコマンド オプションを使用します:
-r: 再帰的、ディレクトリとその内容に対して再帰的な操作を実行します。
-f: 強制、確認は不要ですこれら 2 つのオプションは、-r と -f を別々に記述することも、POSIX 規則に従って、2 つのオプションを組み合わせて -rf にすることもできます。ここでの -r および -f オプションは、上の図にある「Rubbish」および「Files」のスプーフィングではありません。
次のパラメータ /* は、ルート ディレクトリ / にあるすべてのファイルを参照します。
-r オプション
-r オプションは再帰を表し、パラメータ内のディレクトリとその下のファイルまたはサブディレクトリを再帰的に削除することを意味します。このオプションには、短いオプション スタイルに加えて、GNU スタイルの長いオプション -recursive もあり、互換性上の理由から、同義の大文字の -R パラメータがサポートされています。
このオプションを使用しないと、ディレクトリとその内容は削除されません。
-f オプション
-f オプションを紹介する前に、ここには表示されていない -i オプションを見てみましょう。ネイティブ rm コマンドは、ファイルまたはディレクトリを削除するときに UNIX の規則に従います。削除操作を実行する前と操作が成功した後は、何も表示されません。エラー(削除したいファイルが存在しないなど)が発生しない限り、決して文句を言わないでください。
その後、おそらく多くの人が誤ってファイルを削除してしまうことが多いため、ほとんどの Linux ディストリビューションの rm コマンドは、-i オプションが追加されたエイリアスです。 リーリー
ここでの -i オプションは、各削除アクションの前にプロンプトを表示するために使用され、ユーザーは削除前に明示的な確認を行う必要があります。
ただし、場合によっては、このプロンプトが非常に煩わしいため、多くの人が意図的に -f オプションを使用して、操作中に -i オプションの動作をオーバーライドし、このエイリアスの定義を無意味にしています。
したがって、3 つ以上のファイルを削除する場合、または再帰的に削除する場合に確認を求める -I オプションもあります。これは、-i オプションよりも煩わしさが少なく、ほとんどの誤った操作を防ぎます。したがって、上記のエイリアスには -I オプションを使用し、-f オプションの使用を避けることができます。
*** ワイルドカードとは**
* がディレクトリ内のすべてのファイルを参照するためにコマンドで使用されていることがわかります。ただし、厳密に言えば、ワイルドカード文字 * は、ドット「.」で始まらないすべてのファイルを表します。 「.」で始まるファイルは、Linux ではデフォルトで隠しファイルです。
したがって、このコマンドは、/ ディレクトリ内の . で始まる隠しファイル、および . および .. ディレクトリは削除しません。ただし、再帰的操作は Bash などのシェルによるワイルドカード拡張ではないため、再帰的操作中は、. および .. ディレクトリを除くサブディレクトリ内のすべてのファイルとサブディレクトリが、. で始まるかどうかに関係なく、再帰的に削除されます。
ディレクトリの内容を削除するときに、なぜ . と .. を同等に扱わないのでしょうか?なぜなら、rm コマンドがディレクトリを削除できるようになった 1979 年以来、この 2 つの特別なディレクトリを特に避けてきたからです。
ルート ディレクトリの保護 一定の経験を持つシステム管理者は、この時点で、rm コマンドにはルート ディレクトリ専用のオプションのペアである -preserve-root および -no-preserve-root があることを覚えているかもしれません。このオプションのペアの意味は次のとおりです: –preserve-root: ルート ディレクトリを保護します。これがデフォルトの動作です。 –no-preserve-root: ルート ディレクトリを保護しません。 このオプションのペアは、後で rm コマンドに追加されました。おそらくほぼすべてのシステム管理者が操作ミスをしたことがあり、その多くはルート ディレクトリを削除したことがあります (私もその一人です)。これが起こる理由はいくつかあります: 入力エラー: たとえば、最初は rm /tmp/test.txt と入力したかったのですが、誤ってキーボードが開いてしまい、余分なスペースを入力してしまい、rm / tmp/test.txt になってしまいました。ルート ディレクトリ (/) の後にスペースがあるのを見ましたか? ! ——これは私自身が現在犯している間違いであり、実稼働サーバー上で発生したものです。 間違って初期化されているか、間違った名前が付けられたシェル スクリプト変数: たとえば、スクリプト rm -rf /${tmp_dir} で、tmp_dir 変数が正しく割り当てられていないか、正しく入力されていない場合 (おそらく元は tmpdir でした?)、何が原因になりますか?もちろん、ルートディレクトリは削除してください~ この状況が後を絶たないことから、Linux 界隈では「初心者はどうやって vi を終了するか」とほぼ同じくらい古典的なジョークになっています。したがって、POSIX 第 7 版の仕様では、このエラーの可能性を減らすために、デフォルトの動作として -preserve-root オプションが rm コマンドに追加されました。 ただし、このオプションは、この記事で説明されているルート ディレクトリ (/*) 内のすべてのファイルのクリアを妨げるものではありません。 なぜ –no-preserve-root オプションが表示されるのかと尋ねる学生もいるかもしれません。これはおそらく、望むすべてのパワーを与え、愚かであることはオペレーティング システムの仕事ではなく、あなたの仕事であるという UNIX の哲学によるところが大きいでしょう。どうしてもルート ディレクトリ内のすべてのファイルを削除したい場合はどうすればよいでしょうか? 言わないでください、そのようなニーズはあります。たとえば、chroot 環境にあるすべてのファイルをクリアしたいとします。ここでは chroot については説明しません。chroot はディレクトリを「刑務所」として使用します。このディレクトリは論理的に新しい「ルート ディレクトリ」を形成します。刑務所内のファイル操作はディレクトリの範囲外に出ることはできません。近年普及しているDockerやLXC/LXDなどのコンテナ技術はすべてchroot技術です。 UEFI システム わかりました。あなたはもっとユニークで、物理環境のルート ディレクトリにあるすべてのファイルをクリアしたいと考えているかもしれません。しかし、Enter キーを押す前に、UEFI システムを使用しているかどうかをもう一度考えてください。 UEFI システムはファームウェア、変数、設定をルート ディレクトリの /sys パーティションにマップするため、UEFI 環境のルート ディレクトリ内のすべてをクリアすると、/sys もクリアされ、これが可能になります。 UEFI の推定設定が失われ、デバイスがブリックしてしまいます。 sudo 権限昇格 root や他のユーザーなどのシステムに属するファイルを削除するには、このコマンドの前に sudo を付けて権限を昇格する必要もあります。 このコマンドを入力すると、パスワードの入力を求められます。誰のパスワード? root パスワードではなく、コマンドを入力している現在のユーザーのパスワードです。 sudo コマンドを実行できるユーザーと、sudo コマンドでどのようなコマンドを実行できるかについては、ここでは詳しく説明しませんので、他の記事を参照してください。ところで、sudo と su コマンドの接続と違いを区別することを忘れないでください。 これを勉強した後、「ジャンク ファイル」を削除するというこのコマンドの本来の目的を忘れることはできません。
Linux にジャンク ファイルはありますか?持っている。これらのジャンク ファイルは通常、次の場所から来ます: ソフトウェア パッケージが削除された後、パッケージ マネージャーによって管理されない孤立したファイルがシステムに残ります 不要な依存パッケージ。これらの依存パッケージを必要とするソフトウェアが削除された後、それらは削除されません 一時ファイルがクリーンアップされていない レガシー診断ファイル これらのジャンク ファイルは削除する必要がありますか?一般に、Linux システム上のこれらのファイルのほとんどは、ファイル数が多すぎて多くのストレージ領域と i ノードを占有しない限り、システムの正常な動作に影響を与えません。 したがって、Linux システムが遅いと感じた場合、それはジャンク ファイルが原因ではないことはほぼ確実です。少なくとも現時点では、Windows システムのエクスペリエンスをコピーする価値はありません。 この記事を通じて、Linux システムでライブラリを削除し、ファイルを実行するための安全な方法と手順について学びました。これは単純な操作ですが、関連する知識なしで実行すると重大な結果を招く可能性があります。データをバックアップし、注意を払い、必要に応じて復元することの重要性を忘れないでください。
以上が注意深い! Linux システムでライブラリを安全に削除し、ファイルを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。