Ich versuche, den Befehl "find" das Dateisystem "/ proc" ausschließen zu lassen. Ich würde eine tragbare Lösung bevorzugen, um sie auf nicht GNU-basierten Hosts verwenden zu können (älteste AIX zum Beispiel, bei der "find" nicht die Option "-path" hat)
Folgendes habe ich versucht (auf einem Linux-Host) und eine teilweise gefilterte Ausgabe:
$ find /! -fstype proc> / dev / null find: `/ proc / 9475 / task / 9535 / fdinfo / 7 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 10856 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 10856 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 10858 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 10858 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15650 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15650 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15654 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15654 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15656 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15656 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15657 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15657 ': Keine solche Datei oder kein solches Verzeichnis find: `/ proc / 15663 ': Keine solche Datei oder kein solches Verzeichnis usw ....
Ich verstehe nicht, warum "find" trotz des "! -Fstype proc" -Schalters weiter im "/ proc" -Dateisystem läuft?
quelle
-path
(ursprünglich eine BSD-Erweiterung, GNU-Fund wurde ursprünglich-wholename
später in-path
IIRC geändert ) ist eine relativ neue (2008) Ergänzung zu POSIX. Sie können auch verwenden-exec test /proc = {} \;
, obwohl das sehr ineffizient wäre.$ find / \( -fstype proc -o -fstype procfs \) -prune | head
Geben Sie den folgenden Fehler ein:find: invalid filesystem type proc
find
für jedes Betriebssystem auf bestimmte Weise auf.Die
-fstype
Anweisung weistfind
an, keine Ergebnisse für diesen Dateisystemtyp zurückzugeben. Dies bedeutet jedoch nicht, dass das/proc
Verzeichnis nicht angezeigt wird . Es bedeutet einfach, dass keine auf einemproc
Dateisystem gefundenen Dateien zurückgegeben werden . Es muss jedoch noch das/proc
Verzeichnis durchsuchen, da nicht bekannt ist, ob etwas, ein Nicht-Proc-Dateisystem, bereitgestellt wurde/proc/something
. Zum Beispiel finde ich auf meinem Bogen:Dies liegt daran, dass
/proc/sys/fs/binfmt_misc/
es sich nicht um ein Proc-Dateisystem handelt:Es gibt also zwei Mountpunkte, unter
/proc
denen Nicht-Proc-Dateisysteme gespeichert sind.Beachten Sie daher, dass Ihre Frage nur Fehlermeldungen enthält. Keine dieser Dateien wurde tatsächlich von zurückgegeben
find
, daher scheint sie sich wie erwartet zu verhalten. Es geht durch die Dateien in/proc
, berücksichtigt sie jedoch nicht als übereinstimmend, wenn sie sich in einemproc
Dateisystem befinden.quelle
/proc
. Fühlen Sie sich noch freier als sonst, um Verbesserungen vorzunehmen.find
/ proc aufgezählt, bevor die Dateitypen untersucht werden; Sobald es sie versuchte,stat
waren sie weg (Prozess beendet).binfmt_misc
wird einfach in ein Verzeichnis innerhalb gemountet/proc
(Sie können das mit sehenmount | grep binfmt
; es gibt nichts Besonderes daran, Sie können einfach jedes Dateisystem, das Sie mögen, in jedes Verzeichnis mounten, das Sie mögen, z. B.mkdir -p fake_dir; echo systemd666 > fake_dir/comm; mount --bind fake_dir /proc/1