2016-11-24 5 views
0

Die Frage der Umleitung der Ausgabe eines Befehls wurde bereits oft gefragt, aber ich habe ein seltsames Verhalten. Ich benutze eine Bash-Shell (debian) mit der Version 4.3.30 (1) -Release und versuchte, die Ausgabe in eine Datei umzuleiten, aber nicht alles ist in der Datei geloggt. Die Bin-Datei, die ich zu laufen versucht ist Soße-connectv4.4.1 für Linux (Client von saucelabs, die öffentlich in Internet verfügbar ist)Bash Umleitung Ausgabe in Datei, aber das Ergebnis ist unvollständig

Wenn ich

#sudo ./bin/sc --doctor 

führen Sie es zeigte mir eine komplette Linien
druckt:

INFO: bis '23 aufgelöst .42.27.27'
INFO: Lösung 'g2.symcb.com' mit
DNS-Server '10 .0.0.5' ... (gefolgt von anderer Linie)
INFO: 'google.com' ist nicht in Wirten
Info-Datei: URL https://google.com

jedoch erreicht werden kann, wenn ich umleiten den gleichen Befehl in einer Datei mit dem folgenden Befehl

#sudo ./bin/sc --doctor > alloutput.txt 2>&1 

und tun

#cat alloutput.txt 

die gleichen Befehlsausgabe wird protokolliert, aber veraltet, wie folgend:

INFO: gelöst '23 .42.2me @ mymachine:/opt/$

Es hat unvollständige Linie, und die nächsten Zeilen, die folgt sind nicht einmal geloggt (fehlt).

Ich habe mit >> zum Anhängen versucht, es hat das gleiche Problem. Mit dem Befehl &> alloutput.txt wird auch nicht das ganze Zeug gedruckt. Kann jemand darauf hinweisen, wie man alle Zeilen des obigen Befehls vollständig in die Textdatei einträgt?

UPDATE

Am Ende habe ich verwalten die native Binärlogging verwenden, indem Sie --log alloutput.txt wo es mir vollständig mit dem Ausgang korrekt liefern. Allerdings lasse ich diese Frage offen, wie ich bin immer noch fragen, warum man einige Informationen/Linien verpasst durch eine Umleitung der Ausgabe zu tun

+1

Was ist die Ausgabe von 'cat -v alloutput.txt'? – chepner

+0

@chepner: der Ausgang für den Ausgang "cat -v alloutput".txt ist das gleiche wie wenn die obige Binärdatei ausgeführt und in der Konsole angezeigt wird, es gibt jedoch einige Zeilen, die fehlen (wie im Absatz beschrieben) – heike

+1

Eine andere Sache zu versuchen: Standardfehler und Standardausgabe separat umleiten: './bin/sc> out.txt 2> err.txt'. Ich vermute eine Kombination von './Bin/sc', die CRLF-Zeilenendungen zusammen mit der nicht-deterministischen Mischung von stdout und stderr ausgibt. – chepner

Antwort

0

Das ist ein komisches Problem, ich habe das nie vorher gesehen. Ich werde hier auf einem Bein gehen und schlagen diese, wie es funktioniert:

sudo ./bin/sc --doctor 2>&1 | tee -a alloutput.txt 
+0

INFO: aufgelöst zu '162.222.75.243' INFO: Auflösung 'sacelabs.com' mit DNS-Server '192.168.2.1' ... INFO: gelöst auf '[email protected]:/opt/$ funktioniert immer noch nicht. es ist wirklich seltsam, habe verschiedene Methoden ausprobiert, aber ich sehe immer noch nicht, was die Ursache sein könnte – heike

+1

Ich glaube, dass es mit dem Programm selbst zu tun hat, wie es gebaut wurde. Wenn das native Binary funktioniert, hat der Autor wahrscheinlich solche Fälle vorausgesehen und eine Lösung gefunden. Trotzdem ist es sehr seltsam. Wenn Sie können, versuchen Sie etwas anderes, nur für Tritte: Speichern Sie das Ergebnis in einer Variablen und drucken Sie dann den Wert: testVar = "$ (sudo ./bin/sc --doctor)"; echo "$ testVar"; –

-1
#commandtorun &> alloutput.txt 

Dieser Befehl wird sowohl leitet den Fehler und die Ausgabe an derselben Datei.

+0

genau dasselbe Ergebnis, die output.txt ist unvollständig. die gleiche Zeile fehlt – heike

+0

Ein bisschen Erklärung wäre nett. – sjsam

+0

@sjsam welche Art von Informationen sollte ich auch hinzufügen? Ich bearbeite nur den Originaltext mit der Bash-Version – heike

Verwandte Themen