2016-07-25 41 views
0

Ich habe erfolgreich die Protokollierung für das stdout/stderr einer Programmausgabe in eine Datei hinzugefügt.Log stdout & stderr, wenn Programm in Bildschirm gestartet wird

Aber wenn ich das Programm von screen starte die Logdatei leer ist, weil es nur Nachrichten von screen und nicht aus dem Programm loggt innerhalb screen im Hintergrund ausgeführt wird.

Irgendeine Möglichkeit, diese oder andere Lösungen bitte zu beheben, damit ich ein abnehmbares Programm mit stdout/stderr Protokollierung ausführen kann, ähnlich screen?

aktuelle Startlinie:

Bildschirm -A -m -d -S Test ./testserver -config = config.cfg -filepatching -autoinit 1 >>“./ log _ $ (date +% s). txt "2 >>" ./ log _ $ (Datum +% s) .txt "

+0

Vielleicht haben Sie einige Informationen oder Code hinzufügen können, wie Sie es jetzt tun. Ansonsten ist es fast unmöglich zu erraten, was falsch ist. – nidomiro

+0

hinzugefügt Startup-Linie – Daniel

Antwort

1

Das Problem ist, dass Sie Ihren Befehl kapseln müssen. Gerade jetzt 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt" gilt für Bildschirm selbst, nit das Programm ausgeführt.

Versuchen Sie stattdessen:

screen -A -m -d -S test './testserver -config=config.cfg -filepatching -autoinit 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt"' 

Oder diese:

screen -A -m -d -S test /bin/sh -c './testserver -config=config.cfg -filepatching -autoinit 1>>"./log_$(date +%s).txt" 2>>"./log_$(date +%s).txt"' 
+1

vielen Dank :) – Daniel