Wie bekomme ich nohup.out öfter gespült?


7

Unter Ubuntu 10.04 habe ich ein langes Python-Programm, das eine Reihe von Ausgaben druckt. Ich führe dies unter "nohup" aus. Es wartet jedoch bis zum Ende, bis der gesamte Text in nohup.out eingefügt ist. Wenn ich ähnliche Programme unter FreeBSD ausführe, wird jede Zeile an nohup.out gesendet. Gibt es eine Ubuntu-Einstellung, die ich einstellen kann, um die Ausgabe schneller zu erhalten?

Antworten:


9

Ja, das hat damit zu tun, wie stdout unter Linux standardmäßig gepuffert wird. Sie müssen setbuf () explizit im Code ausführen, um dieses Verhalten zu überschreiben.

Mein Vorschlag ist, nohup zu vermeiden. Wenn Sie die Bash-Shell verwenden, können Sie den Befehl von Ihrer Shell trennen

$ ( my_cmd > ~/output.log 2>&1 & ) 

Sie können disowneinen ähnlichen Effekt auch für einen aktuell ausgeführten Job verwenden.


Warum würden Sie empfehlen, nohup zu vermeiden?
Warner

Ich denke, weil es dumm ist, setbuf () in jedes Python-Skript zu setzen, das möglicherweise nicht aktualisiert wird.
Paul Hoffman

Dies funktioniert, obwohl ich immer noch Pufferung bekomme. Das könnte an dem Programm (Server) liegen, das ich gerade ausführe - ich muss mich mit der Pufferung befassen, die es möglicherweise ausführt.
Chris Prince

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.