Entnommen aus dem Link "Ausgabe von einem laufenden Prozess umleiten", der in dieser StackOverflow-Antwort zu einer ähnlichen Frage angegeben ist. Sie können diese Anweisungen mit dieser Antwort vergleichen, die denselben Trick für andere Zwecke behandelt.
Hier ist der grundlegende Vorgang, vorausgesetzt der Befehl läuft bereits. Dies funktioniert gut für die reguläre STDOUT-Ausgabe. Die ursprüngliche Schreibweise verwendet cat > foo1
als Beispiel ein lang andauerndes Ausgabeprogramm.
Abhängig von den Details des Prozesses, den Sie stummschalten möchten, müssen Sie diesen Prozess möglicherweise für STDERR (oder andere Ausgabestreams) anstelle von oder zusätzlich zu STDOUT ausführen.
Finden Sie die Prozess-PID.
$ ps aux | grep cat user 6760 0.0 0.0 1580 376 pts/5 S+ 15:31 0:00 cat
Verbinden Sie sich mit GDB mit dem Prozess.
$ gdb -p 6760 /bin/cat GNU gdb 6.4.90-debian Copyright (C) 2006 Free Software Foundation, Inc [lots more license stuff snipped] Attaching to program: /bin/cat, process 6760 [snip other stuff that's not interesting now]
Schließen Sie in GDB den Prozess STDOUT. ("(gdb)" ist die GDB-Eingabeaufforderung; geben Sie ein, was Sie in diesen Zeilen sehen. Die anderen Zeilen sind Beispielausgabe.)
(gdb) p close(1) $1 = 0
Öffnen Sie in GDB eine neue Datei. Hinweis: Der Rückgabewert "1" zeigt an, dass die neue Datei als STDOUT geöffnet wurde. "0600" ist der Modus (Dateiberechtigungen) der neuen Datei (Bedeutung "lesbar und schreibbar für Besitzer, nicht für andere Personen").
(gdb) p creat(“/tmp/foo3″, 0600) $2 = 1
Beenden Sie GDB; Lass den Prozess laufen.
(gdb) q The program is running. Quit anyway (and detach it)? (y or n) y Detaching from program: /bin/cat, process 6760