
Ich kann keine Möglichkeit finden, den Fehler auf meinem NAS umzuleiten.
Die Shell ist /bin/sh
und wenn ich sie verwende, > mylogfile.log 2>&1
wird immer noch der Fehler auf dem Terminal angezeigt. Der spezifische Befehl ist
find /volume1/ | grep "totoro" > ~/totoro.log 2>&1
und ich sehe einen Fehler von find
. Gibt es eine Möglichkeit, die Umleitung zum Laufen zu bringen? Wie schreibe ich find
Fehler in die Protokolldatei?
Antwort1
find /volume1/ | grep "totoro" > ~/totoro.log 2>&1
Ihre 2>&1
Auswirkungen grep
nur, nicht find
. Im folgenden Befehl die ersten 2>&1
Auswirkungen find
:
find /volume1/ 2>&1 | grep "totoro" > ~/totoro.log 2>&1 # probably wrong
Dies sendet jedoch stderr zusammen mit stdout von find
an grep
. Sie möchten stderr wahrscheinlich nicht grep
von filtern find
. Ich nehme an, Sie möchten stdout und stderr des gesamten zusammengesetzten Befehls erfassen. Wenn ja, führen Sie den Befehl in einer expliziten Subshell aus und leiten Sie seine Ausgabe- und Fehlerströme um:
(find /volume1/ 2>&1 | grep "totoro") > ~/totoro.log 2>&1
Antwort2
Bitte beachten Sie den Befehl „tee“. Er liest von der Standardeingabe und schreibt in die Standardausgabe und in Dateien. Dies kann hier hilfreich sein.