Bei der Suche nach systemaufgelösten Diensten nach der kürzlich bekannt gewordenen Sicherheitsanfälligkeit stellte ich ein sehr merkwürdiges Verhalten des Befehls find fest.
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
Der Befehl gibt 0 oder zwei Zeilen als Ausgabe für den ersten Lauf zurück. Aber wenn ich den Befehl das zweite Mal ausführe, erhalte ich:
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
./lib/systemd/systemd-resolved
./lib/systemd/system/systemd-resolved.service.d
./lib/systemd/system/systemd-resolved.service
Dies bedeutet, dass "find" beim ersten Mal nicht wirklich alles findet. Auch das passiert nur einmal. Wenn Sie den Befehl das nächste Mal ausführen, wird die korrekte Ausgabe angezeigt. Ich habe dies auf einigen anderen Systemen mit Debian 8 (jessie) überprüft. Bei Kernel 4.9 und höher tritt dieses Problem immer auf, bei Kernel 3.16-Systemen jedoch nicht.
Nach dem Neustart des Systems geschieht dies alles erneut. Das Verhalten ist jedoch für jedes einzelne System gleich. Das bedeutet, dass, wenn das Testen auf einem bestimmten System (falsch) zwei Ausgabezeilen für den ersten Durchlauf und die korrekte Ausgabe für den zweiten Durchlauf zurückgibt, die erste Ausführung des Befehls nach dem Neustart des Systems erneut zwei Zeilen ausgibt. Daher zeigen die Systeme nach jedem Neustart das gleiche Verhalten (gemäß meinen Tests). Die Dateidetails lauten wie folgt:
-rw-r--r-- 1 root root ./usr/share/man/man8/systemd-resolved.service.8.gz
lrwxrwxrwx 1 root root ./usr/share/man/man8/systemd-resolved.8.gz -> systemd-resolved.service.8.gz
-rwxr-xr-x 1 root root ./lib/systemd/systemd-resolved
drwxr-xr-x 2 root root ./lib/systemd/system/systemd-resolved.service.d
-rw-r--r-- 1 root root ./lib/systemd/system/systemd-resolved.service
BEARBEITEN: An alle, die das Problem vorschlagen, möglicherweise im Zusammenhang mit diesem speziellen Fall für diese speziellen Dateien: " System-gelöst " ist nur ein Beispiel. Dies passiert auch bei der Suche nach anderen Keywords. Dies ist ein weiteres Beispiel, das beim ersten Durchlauf falsche Ergebnisse liefert:
root@localhost:/# find . -name "*apache*"
Ist niemand hier in der Lage, dieses Problem auf einem Debian 8 mit dem neuesten Kernel aus dem Backport-Repository zu überprüfen?
/lib/systemd
montiert? Um was für ein Dateisystem handelt es sich? Wenn es ein separaten ist Mount - Punkt, welche Zeit war es angebracht?
strace
? Auf welchem Betriebssystem haben Sie das fehlerhafte Verhalten beobachtet? Was meinst du mit "liefert 0 oder zwei Ergebnisse wie oben"? Null oder zwei Ausgabezeilen oder Beendigungscode 0 + zwei Zeilen? Kommt es erneut vor, nachdem eine neue Shell gestartet oder neu gestartet wurde? Es kann relevant sein, dass der erste Aufruf nur Dateien zurückgibt, während der zweite Dateien und Verzeichnisse zurückgibt.