Ich möchte mehrere Python-Skripte gleichzeitig in einer Bash-Sitzung ausführen und ihre Ausgaben in Echtzeit überprüfen. Um diese Aufgabe zu erfüllen, schrieb ich ein einfaches Bash-Skript, das unten gezeigt wird:
%Vor% Wenn ich den Befehl cat 1.output
verwende, um zu überprüfen, was während der Ausführung gedruckt wurde, ist nichts zu sehen.
Nachdem ich eine Weile nachgedacht habe, merke ich, dass 1.output
gefüllt werden muss, wenn 1.py
die Ausführung beendet. Mit anderen Worten, die Methode, die ich hier verwendet habe, ist keine real time
Mode.
Sie können darauf warten, dass diese Python-Skripte fertig sind. Die Tatsache ist leider, dass alle Python-Skripte tatsächlich lang laufende Programme sind, sie können nach Tagen oder Monaten abgeschlossen sein, und deshalb möchte ich ihre Ausgaben in Echtzeit überprüfen.
Sie können mir auch vorschlagen, die Python-Skripte so zu modifizieren, dass die Nachricht direkt in die Datei anstatt in stdout
gedruckt wird. Entschuldigung, die Skripte hier sind zu komplex um sie zu verändern, da sind Chucks von print
Funktion in ihnen.
Was kann ich jetzt tun?
Wenn Sie eine Art Hauptschleife im Programm finden, die ein guter Indikator für den Fortschritt sein könnte, wäre es gut, in eine Datei zu schreiben. Wenn Sie sagen, dass die Ausgabe nicht gefüllt wird, bis der Ausgabestream von Python geschlossen wird, ist dies wahrscheinlich die einfachste Alternative.
Sie können versuchen, stderr / stdout in Ihren Skripten zu überschreiben, indem Sie Folgendes tun:
%Vor% Dann schreiben alle Aufrufe von print
in diese spezielle Datei, nicht in stdout. Das Hauptproblem könnte jedoch mit gepuffertem IO sein. Sie müssen irgendwie flush
Inhalt einer solchen Datei auf die Festplatte.
Tags und Links python background-process bash redirect