Angenommen, ich starte einen Prozess im Terminal und er sendet während der Ausführung eine Ausgabe an den Standardfehler. Ich möchte den Prozess in den Hintergrund rücken und ihn gleichzeitig zum Schweigen bringen.
Gibt es eine Möglichkeit, dies zu tun, ohne den Prozess anzuhalten und ihn mit &
und erneut zu starten > /dev/null 2>&1
? Ich frage mich, ob es einen Befehl gibt, der ausgeführt wird bg
und auch die Ausgabedeskriptoren des Zielprozesses ändern kann.
quelle
SIGSTOP
ein Verfahren (oder wie Sie sagen tun CTRL + Z ) nicht zum Schweigen bringt keinen Prozess. Es stoppt einen Prozess!Bei dem Prozess, der von einem Terminal ausgeführt wird, sind stdin, stdout und stderr an das Terminal gebunden, und Sie können nichts dagegen tun, ohne die Kontrolle über dieses Terminal wiederzugewinnen ... Normalerweise. Es gibt jedoch einige knifflige Tools, mit denen Sie dies tatsächlich tun können. Schauen Sie sich dieses Beispiel an . Und andere Programme wie dort
retty
erwähnt.quelle
Ich bin mit andcoz nicht einverstanden, dass es zu spät ist, die Ausgabe zum Schweigen zu bringen.
Angenommen, der Prozess wird im Vordergrund ausgeführt, verwenden Sie ihn
Ctrl-Z
, um den Prozess anzuhalten. Dadurch werden die Auftragsnummer und die Prozess-ID gemeldet. Sie können den Prozess mitbg %1
(für Job Nr. 1) in den Hintergrund verschieben . Obwohl dies den Prozess in den Hintergrund rückt, wird die Ausgabe nicht stummgeschaltet. Um die Ausgabe stummgdb
zu schalten, können Sie alle Ausgaben umleiten/dev/null
.Dies wurde zuvor unter /programming/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764 sehr gut beschrieben .
quelle
Ein weiteres Befehlszeilenprogramm ist
detach
. Die neueste Version unterstützt das Schreiben von PID-Dateien, das Verwenden von Dateien für stdin, stdout und stderr und das Ausführen im Vordergrund. (Die Website vondetach
diskutiert auch ähnliche Tools.)http://inglorion.net/software/detach/
quelle