Linux-Befehle und Shell-Fähigkeiten
find: Die Linux-Suche, die alles erledigt
find ist der gefährlichste Befehl auf einem Produktionsserver, und genau deshalb verdient er Beherrschung. Es zählt, filtert und führt in einem Ausdruck aus, und jeder klassische „/var hier sind Drachen“-Vorfall geht auf eine Vorschau zurück, die jemand übersprungen hat. Die Gewohnheiten sind mechanisch: Gehen Sie zuerst mit -print oder -ls, stapeln Sie mit -exec ... +, leiten Sie -print0 an xargs -0 weiter und behandeln Sie -delete als Entscheidung im zweiten Durchgang, niemals als ersten Entwurf.
Kernpunkte
- Filtern Sie nach Metadaten, nicht nur nach dem Namen: -type f, -mtime +30, -size +100M und -perm -o+w suchen nach den seltsamen Dateien, die sowohl von Namenskonventionen als auch von Altersberichten übersehen werden.
- Sehen Sie sich jede destruktive Abfrage in der Vorschau an: Finden Sie zuerst /var/www/uploads -name 'core.*' -ls, tauschen Sie -ls gegen -delete erst aus, nachdem Sie die Liste tatsächlich gelesen haben; Bei der Vorschau handelt es sich um einen Sicherheitscheck, nicht um einen Vorschlag.
- -exec cmd {} + stapelt Dateien in wenige Aufrufe und schlägt den \; bilden sich an großen Bäumen; Dieselbe Syntax ermöglicht „jede übereinstimmende Datei in einem Prozess mit RM“, ohne dass ein Argument-List-too-long-Fehler auftritt.
- Standardmäßig nullsichere Ausgabe: find . -name '*.old' -print0 | xargs -0 rm -v; Einfache Pipes in XARGs sind ein bekanntes Datenverlustmuster, wenn ein Dateiname ein Leerzeichen enthält.
- -xdev und -max Depth halten den Weg ehrlich: Sie verhindern, dass find Mounts und Snapshots folgt, was sowohl die Laufzeit als auch Ihre Annahmen über „dieses Verzeichnis“ rettet.
- Zeitfenster sind präzise, wenn genau gefragt wird: -mmin -1440 für die letzten 24 Stunden, -newermt '2026-01-01' für seit einem Datum, und denken Sie daran, -xtime bedeutet 'vor n vollen 24 Stunden', bevor Sie es in einem Ticket angeben.
- Bewusst beschneiden: find . -path '*/node_modules' -prune -o -name '*.js' -print überspringt das eine Verzeichnis, das ansonsten in Größe und Zeit den Rest des Baums überwiegt.
- Erwarten Sie Exits ungleich Null bei nicht lesbaren Verzeichnissen; stderr-Zeilen wie „Permission denied“ sind übersprungene Dateien, keine Daten, daher tolerieren Skripte entweder den Exit-Status von find oder überprüfen ihn explizit, anstatt saubere Spaziergänge anzunehmen.
Praxisnotiz
Unsere schlimmste find-delete-Geschichte begann mit einem nicht zitierten -name-Muster, das die zweite Shell stromaufwärts von find in drei Wörter erweiterte. Die Regel ist einfach: -print first, immer quoten und -delete never fügt einen Befehl bei der ersten Ausführung ein.
Häufige Fragen
Meine Suche hat Dateien gefunden, aber der Downstream-Befehl hat nichts bewirkt. Warum?
Fast immer Anführungszeichen oder leere Eingaben: Das Muster wurde von der Shell erweitert, bevor find es sah, oder xargs hat nichts erhalten. Zitieren Sie Muster und koppeln Sie jedes Mal -print0 mit xargs -0.
-delete oder rm nach find?
-delete ist direkt, schnell und gnadenlos; Es kann nicht mit -exec im selben Ausdruck gemischt werden. Führen Sie zuerst den passenden -print aus und lesen Sie ihn; das ist die ganze Disziplin.
Warum werden Druckberechtigungsfehler in Systemverzeichnissen gefunden?
Komponenten, die Sie nicht lesen können, geben Fehler an stderr aus und machen den Find-Exit ungleich Null; Filtern Sie mit 2>/dev/null für interaktiven Komfort und interpretieren Sie diese Fehler niemals als fehlende Dateien.
Wieder Unterschied zwischen -mtime und -ctime?
-mtime ist eine Inhaltsänderung, -ctime ist eine Metadatenänderung (Berechtigungen, Umbenennung, Anzahl der Hardlinks); ein chown oder ein move erhöht ctime, ohne mtime zu berühren, was genau einen Bericht pro Quartal durcheinander bringt.
Wie Kinetikatech bei linux-befehle und shell-fähigkeiten hilft
Das haben wir schon hundertfach gelöst: Die Befehle und Skriptgewohnheiten, die darüber entscheiden, ob ein Administrator einen Server betreibt oder ihn bekämpft: Suchen, Transformieren, Übertragen und Überwachen von Texten und Prozessen mit den Tools, die in jeder Basisinstallation enthalten sind. Mit Linux-Server-Sicherheit und Serververwaltung erhalten Sie den kompletten Kreislauf: Wir bewerten, wir setzen um, wir überwachen rund um die Uhr und wir reagieren innerhalb von 30 Minuten, wenn es darauf ankommt.