Wie kann ich in tcsh die Ausgabe eines bereits laufenden Hintergrundprozesses stummschalten?

1368
Ross Rogers

Wenn ich einen Job in den Hintergrund gestellt habe, wie kann ich dann seine Ausgabe auf die Ausgabe umleiten /dev/nulloder auf irgendeine Weise stummschalten?

Ich habe den Job nicht angefangen wie:

CMD >& /dev/null & 

Ich habe angefangen wie:

CMD & 

CMDKann ich jetzt den Ausgang stummschalten?

3
Ähnliche Frage hier: http://stackoverflow.com/questions/1323956/wie-zu-redirect-output-of-an-already-running-prozess dogbane vor 14 Jahren 1

1 Antwort auf die Frage

2
quack quixote

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 > foo1als 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.

  1. 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 
  2. 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] 
  3. 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 
  4. Ö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 
  5. 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 

Quelle