Wenn ich einen Job im Hintergrund gestartet habe, wie kann ich seine Ausgabe umleiten /dev/null
oder auf irgendeine Weise stumm schalten?
Ich habe den Job nicht angefangen wie:
CMD >& /dev/null &
Ich habe angefangen wie:
CMD &
CMD
Kann ich jetzt, da dies bereits ausgeführt wird, die Ausgabe stumm schalten?
Antworten:
Entnommen aus dem Link "Umleiten der Ausgabe eines laufenden Prozesses" in dieser StackOverflow-Antwort auf eine ähnliche Frage. Sie können diese Anweisungen mit dieser Antwort vergleichen , in der der gleiche Trick für andere Zwecke erläutert wird.
Hier ist der grundlegende Prozess, vorausgesetzt, der Befehl wird bereits ausgeführt. Dies funktioniert gut für die reguläre STDOUT-Ausgabe. Die ursprüngliche Beschreibung verwendet
cat > foo1
als Beispiel ein lang laufendes Ausgabeprogramm.Abhängig von den Details des Prozesses, den Sie zum Schweigen bringen möchten, müssen Sie diesen Prozess möglicherweise für STDERR (oder andere Ausgabestreams) anstelle von oder zusätzlich zu STDOUT ausführen.
Suchen Sie die Prozess-PID.
Stellen Sie mit GDB eine Verbindung zum Prozess her.
Schließen Sie in GDB den Prozess STDOUT. ("(gdb)" ist die GDB-Eingabeaufforderung. Geben Sie ein, was in diesen Zeilen angezeigt wird. Die anderen Zeilen sind Beispielausgaben.)
Öffnen Sie in GDB eine neue Datei. Hinweise: Der Rückgabewert "1" gibt an, dass die neue Datei als STDOUT geöffnet wurde. "0600" ist der Modus (Dateiberechtigungen) der neuen Datei (dh "lesbar und beschreibbar für den Eigentümer, nicht für andere Personen").
GDB beenden; Lasse den Prozess laufen.
Quelle
quelle