Heim  >  Artikel  >  System-Tutorial  >  vorsichtig! So löschen Sie Bibliotheken sicher und führen Dateien in Linux-Systemen aus

vorsichtig! So löschen Sie Bibliotheken sicher und führen Dateien in Linux-Systemen aus

PHPz
PHPznach vorne
2024-02-14 18:06:03892Durchsuche

In Linux-Systemen ist das Löschen von Dateien ein sehr gefährlicher Vorgang, insbesondere wenn sich die Dateien, die Sie löschen möchten, in der Systembibliothek oder im laufenden Verzeichnis befinden. Das Löschen dieser Dateien kann zu Systemabstürzen, Anwendungsfehlern und anderen schwerwiegenden Folgen führen. Heute stellen wir Ihnen vor, wie Sie Bibliotheken und laufende Dateien in Linux-Systemen sicher löschen, um unnötige Risiken zu vermeiden.

Ich sehe im Internet oft, dass einige Bediener oder Programmierer versehentlich die falsche RM-Löschfunktion eingegeben haben, wodurch das System und die Datenbank gelöscht wurden. Was das Weglaufen angeht, wird Ihnen der Herausgeber heute ein detailliertes Verständnis dieser Löschung und des Weglaufens vermitteln.

vorsichtig! So löschen Sie Bibliotheken sicher und führen Dateien in Linux-Systemen aus

Ich habe kürzlich ein Bild im Internet gesehen (die Herkunft des Originalbildes ist unbekannt, das Titelbild wurde mit Änderungen vom Originalbild reproduziert.)

Es macht Sinn, dieses Wort ist einfach und leicht zu merken; auch rf steht für alle Dateien im Verzeichnis, was auch in Ordnung ist. Stellen Sie sicher, dass die Berechtigungen kein Problem darstellen.

Wird jemand einen solchen Befehl ausführen, um sogenannte Junk-Dateien zu bereinigen? Sag es mir nicht, es ist wirklich schwer zu sagen.

Wir veröffentlichen häufig Artikel über Bash-Aliase, und es gibt immer einige Studenten, die einige einzigartige Aliase „beisteuern“, wie z. B. Alias ​​ls=rm -rf, Alias ​​cd=rm -rf usw. Obwohl ich denke, dass sich fast niemand von diesen Befehlen täuschen lässt, haben sie oft Spaß an ihnen.

Ich habe dieses Bild an meinen Freundeskreis geschickt und mein Freund „Long Shisan“ sagte, dass dadurch nicht nur Junk-Dateien, sondern auch Junk-Systemadministratoren entfernt werden.

Ja, warum tauchen solche Witze immer wieder auf? Das liegt daran, dass einige von uns, die das Problem nicht verstehen wollen, es gewohnt sind, bei einem Problem zufällig Befehlsbeispiele aus dem Internet zu finden und sie blind auszuprobieren, ohne ihre Prinzipien zu erforschen oder ihre Zuverlässigkeit zu überprüfen. Witze wie dieser dienen daher eigentlich dazu, „Müll im Systemadministrator“ auszuräumen.

Lassen Sie uns also den obigen Befehl untersuchen und sehen, wie viele Wissenspunkte es hier gibt.

Diese Dinge über

rm

Zunächst wird dieser Befehl verwendet, um alle Dateien im Stammverzeichnis (/) des Linux-Systems zu löschen. Es verwendet zwei Befehlsoptionen:

-r: rekursiv, führt rekursive Operationen für das Verzeichnis und seinen Inhalt aus

-f: erzwingen, keine Bestätigung erforderlich

Diese beiden Optionen können separat geschrieben werden -r und -f, oder sie können gemäß der POSIX-Konvention zu -rf kombiniert werden. Die Optionen -r und -f hier sind definitiv nicht die Parodien „Rubbish“ und „Files“ im Bild oben.

Die folgenden Parameter /* beziehen sich auf alle Dateien im Stammverzeichnis /.

-r-Option

Die Option

-r stellt rekursiv dar, was bedeutet, dass das Verzeichnis im Parameter und die Dateien oder Unterverzeichnisse darunter rekursiv gelöscht werden.

Zusätzlich zur kurzen Option „style“ verfügt diese Option auch über die Option „long“ im GNU-Stil – aus Kompatibilitätsgründen wird auch der Parameter „-R“ in Großbuchstaben unterstützt.

Ohne diese Option werden das Verzeichnis und sein Inhalt nicht gelöscht.

-f-Option

Bevor wir die Option -f einführen, werfen wir einen Blick auf die Option -i, die hier nicht angezeigt wird.

Der native rm-Befehl folgt beim Löschen von Dateien oder Verzeichnissen den UNIX-Konventionen. Er ist still und leise, bevor und nachdem der Löschvorgang erfolgreich ist. Beschweren Sie sich niemals, es sei denn, Sie stoßen auf einen Fehler (z. B. wenn die Datei, die Sie löschen möchten, nicht vorhanden ist).

Später ist der rm-Befehl auf den meisten Linux-Distributionen, wahrscheinlich weil viele Leute Dateien versehentlich löschen, ein Alias ​​mit der hinzugefügten Option -i:

alias rm=rm -i

Die Option -i wird hier verwendet, um vor jedem Löschvorgang eine Eingabeaufforderung zu erstellen, und der Benutzer muss vor dem Löschen eine ausdrückliche Bestätigung geben.

Aber manchmal ist diese Eingabeaufforderung wirklich nervig, daher verwenden viele Leute absichtlich die Option -f, um das Verhalten der Option -i während des Betriebs zu überschreiben, wodurch die Definition dieses Alias ​​bedeutungslos wird.

Daher gibt es auch die Option -I, die eine Bestätigung fordert, wenn Sie drei oder mehr Dateien löschen oder rekursiv löschen möchten. Dies ist weniger störend als die Option -i und verhindert die meisten Fehlbedienungen. Daher können Sie die Option -I für die oben genannten Aliase verwenden und die Verwendung der Option -f vermeiden.

*** Was ist ein Platzhalter**

Wir sehen, dass * im Befehl verwendet wird, um auf alle Dateien im Verzeichnis zu verweisen. Aber streng genommen repräsentiert das Platzhalterzeichen * alle Dateien, die nicht mit einem Punkt „.“ beginnen. Dateien, die mit „.“ beginnen, sind unter Linux standardmäßig versteckte Dateien.

Daher löscht dieser Befehl keine versteckten Dateien, die mit „/“ beginnen, sowie die Verzeichnisse „.“. Bei der rekursiven Operation werden jedoch alle Dateien und Unterverzeichnisse im Unterverzeichnis mit Ausnahme der Verzeichnisse .. rekursiv gelöscht – unabhängig davon, ob sie mit beginnen – da es sich bei der rekursiven Operation nicht um eine Wildcard-Erweiterung durch Shells handelt.

Und warum nicht .. beim Löschen des Inhalts eines Verzeichnisses gleich behandeln? Denn seit 1979 der Befehl rm begann, Verzeichnisse zu löschen, hat er diese beiden speziellen Verzeichnisse ausdrücklich gemieden.

Stammverzeichnisschutz

Systemadministratoren mit gewisser Erfahrung erinnern sich derzeit vielleicht daran, dass der Befehl rm ein Optionspaar speziell für das Stammverzeichnis hat –preserve-root und –no-preserve-root. Dieses Optionspaar bedeutet:

–preserve-root: Schützt das Stammverzeichnis, dies ist das Standardverhalten.

–no-preserve-root: Das Stammverzeichnis nicht schützen.

Dieses Optionspaar wurde später zum Befehl rm hinzugefügt. Wahrscheinlich hat fast jeder Systemadministrator Bedienfehler gemacht, und viele von ihnen haben das Stammverzeichnis gelöscht (ich gehöre dazu). Dafür gibt es mehrere Gründe:

Eingabefehler: Zum Beispiel wollte ich ursprünglich rm /tmp/test.txt eingeben, aber versehentlich flog die Tastatur nach oben und ich gab ein zusätzliches Leerzeichen ein und es wurde: rm /tmp/test.txt. Haben Sie das Leerzeichen nach dem Stammverzeichnis (/) gesehen? ! ——Das ist der Fehler, den ich derzeit selbst gemacht habe, und zwar auf einem Produktionsserver.

Falsch initialisierte oder falsch benannte Shell-Skriptvariablen: Was passiert beispielsweise, wenn in einem Skript rm -rf /${tmp_dir} die Variable tmp_dir nicht richtig zugewiesen oder falsch eingegeben wird (vielleicht war sie ursprünglich tmpdir?)? ? Löschen Sie natürlich das Stammverzeichnis ~

Angesichts der endlosen Häufigkeit dieser Situation ist es in Linux-Kreisen zu einem fast ebenso klassischen Witz geworden wie „Wie man vi für Anfänger beendet“. Daher wurde in der POSIX-Spezifikation der siebten Edition die Option –preserve-root zum Befehl rm als Standardverhalten hinzugefügt, um die Möglichkeit dieses Fehlers zu verringern.

Diese Option schützt jedoch nicht vor dem Löschen aller Dateien im Stammverzeichnis (/*), wie in diesem Artikel beschrieben.

Einige Schüler fragen sich vielleicht, warum die Option –no-preserve-root angezeigt wird? Das liegt wahrscheinlich vor allem an der UNIX-Philosophie, Ihnen die Leistung zu geben, die Sie wollen, und Dummheit ist Ihre Sache, nicht die des Betriebssystems. Was wäre, wenn Sie wirklich alle Dateien im Stammverzeichnis löschen möchten?

Sagen Sie es mir nicht, es besteht ein solcher Bedarf: Sie möchten beispielsweise alle Dateien in einer Chroot-Umgebung löschen. Wir werden hier nicht über Chroot sprechen. Es verwendet ein Verzeichnis als „Gefängnis“. Container-Technologien wie Docker und LXC/LXD, die in den letzten Jahren populär geworden sind, sind allesamt Chroot-Technologien.

UEFI-System

Okay, Sie sind vielleicht einzigartiger und möchten alle Dateien im Stammverzeichnis der physischen Umgebung löschen! Aber bevor Sie die Eingabetaste drücken, denken Sie noch einmal darüber nach: Benutzen Sie ein UEFI-System?

Da das UEFI-System seine Firmware, Variablen und Einstellungen der /sys-Partition im Stammverzeichnis zuordnet, wird /sys auch gelöscht, wenn Sie alles im Stammverzeichnis in der UEFI-Umgebung löschen, was dazu führen kann, dass Sie das löschen geschätzte Einstellungen von UEFI, wodurch das Gerät blockiert wird.

Sudo-Berechtigungseskalation

Um Dateien zu löschen, die zu Systemen wie Root und anderen Benutzern gehören, muss diesem Befehl auch sudo vorangestellt werden, um die Berechtigungen zu erweitern.

Nach Eingabe dieses Befehls werden Sie aufgefordert, Ihr Passwort einzugeben. Wessen Passwort? Nicht das Root-Passwort, sondern das Passwort des aktuellen Benutzers, der den Befehl eingibt.

Auf die Frage, wer den Sudo-Befehl ausführen kann und welche Befehle er über den Sudo-Befehl ausführen kann, gehen wir hier nicht näher ein. Bitte lesen Sie unsere anderen Artikel. Denken Sie übrigens daran, den Zusammenhang und den Unterschied zwischen den Befehlen sudo und su zu unterscheiden.

Junk-Dateien

Nachdem wir dies studiert haben, können wir die ursprüngliche Absicht dieses Befehls nicht vergessen, nämlich das Löschen von „Junk-Dateien“.

Gibt es unter Linux Junk-Dateien? haben. Diese Junk-Dateien stammen im Allgemeinen von:

Verwaiste Dateien, die nicht vom Paketmanager verwaltet werden, verbleiben im System, nachdem das Softwarepaket gelöscht wurde

Nutzlose Abhängigkeitspakete. Nachdem die Software, die diese Abhängigkeitspakete benötigt, gelöscht wurde, werden sie nicht entsprechend gelöscht

Keine temporären Dateien zum Bereinigen

Legacy-Diagnosedateien

Müssen diese Junk-Dateien also gelöscht werden? Im Allgemeinen haben die meisten dieser Dateien auf einem Linux-System keinen Einfluss auf den ordnungsgemäßen Betrieb des Systems, es sei denn, es sind zu viele vorhanden und belegen viel Speicherplatz und Inodes.

Wenn Sie also das Gefühl haben, dass Ihr Linux-System langsam ist, liegt das mit ziemlicher Sicherheit nicht an Junk-Dateien. Zumindest zum jetzigen Zeitpunkt lohnt es sich nicht, die Erfahrung von Windows-Systemen zu kopieren.

In diesem Artikel haben wir die sicheren Methoden und Schritte zum Löschen von Bibliotheken und Ausführen von Dateien in Linux-Systemen kennengelernt. Obwohl es sich um einen einfachen Eingriff handelt, kann die Durchführung ohne entsprechende Kenntnisse schwerwiegende Folgen haben. Denken Sie daran, wie wichtig es ist, Ihre Daten zu sichern, Vorsicht walten zu lassen und sie bei Bedarf wiederherzustellen.

Das obige ist der detaillierte Inhalt vonvorsichtig! So löschen Sie Bibliotheken sicher und führen Dateien in Linux-Systemen aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen