Wie kann ich in tcsh die Ausgabe eines bereits ausgeführten Hintergrundprozesses stumm schalten?

3

Wenn ich einen Job im Hintergrund gestartet habe, wie kann ich seine Ausgabe umleiten /dev/nulloder auf irgendeine Weise stumm schalten?

Ich habe den Job nicht angefangen wie:

CMD >& /dev/null &

Ich habe angefangen wie:

CMD &

CMDKann ich jetzt, da dies bereits ausgeführt wird, die Ausgabe stumm schalten?

Ross Rogers
quelle
1
Ähnliche Frage hier: stackoverflow.com/questions/1323956/…
Dogbane

Antworten:

2

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

  1. Suchen 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. Stellen Sie mit GDB eine Verbindung zum Prozess her.

    $ 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 in diesen Zeilen angezeigt wird. Die anderen Zeilen sind Beispielausgaben.)

    (gdb) p close(1)
    $1 = 0
    
  4. Ö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) p creat(“/tmp/foo3″, 0600)
    $2 = 1
    
  5. GDB beenden; Lasse 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

Quacksalber
quelle