2016-07-21 7 views
2

Ich habe eine Situation, in der ich nicht nohup -p <processid> in Linux RHEL 6.6-Box ausführen kann, heißt es, diese Option wird nicht unterstützt. Ich habe die Manpage gelesen und in Linux hatte es nur --help und --version als Optionen in Linux.`nohup`ing einen bereits laufenden Prozess von PID (ähnlich wie AIX nohup -p)

Gibt es eine andere Alternative für nohup -p, damit ein bereits laufender Prozess einen Ausgang des laufenden Terminals überleben kann?

+1

... auch, ehrlich gesagt, 'nohup' ist im Allgemeinen ziemlich nutzlos. Umleiten von stdin, stdout und stderr an eine Nicht-TTY-Quelle; Sagen Sie der Shell, dass das HUP-Signal gelöscht werden soll, verwenden Sie den eingebauten "disown", um einen Job aus der Prozesstabelle Ihrer Shell zu entfernen, und Sie haben alles erreicht, was "nohup" sonst tun würde, ohne den Befehl verwenden zu müssen. –

+0

@CharlesDuffy also 3 Schritte, das kann man in einem 'nohup' machen? –

+2

Ahh, aber deine drei Schritte zwingen den Benutzer dazu, darüber nachzudenken, was sie tun, und explizite Entscheidungen zu treffen, während dein "one' nohup'' einen völlig hirntoten "nohup.out" Umleitungszielstandard hat. –

Antwort

4

Ein Teil davon ist einfach: Um einen Job aus der Prozesstabelle Ihrer Shell zu entfernen, können Sie disown verwenden.

Der Teil, der nicht easy ist, leitet stdout und stderr von der TTY um. Um dies zu tun, können Sie gdb verwenden, um die Kontrolle über den Prozess zu übernehmen und stdin, stdout und stderr zu ersetzen (beachten Sie, dass Sie sicher sein müssen, dass dies auch für andere Subprozesse oder Threads gilt, die ebenfalls die exit Betrieb):

# for an instance of /path/to/program with PID 1234 

# note that this is intended to be a transcript of content typed at a prompt -- it isn't a 
# working shell script, since the commands after "gdb" are to be run *by gdb*, not the 
# shell. 

gdb /path/to/program 
attach 1234 
p dup2(open("/dev/null", 1), 0) 
p dup2(open("stdout-file", 1), 1) 
p dup2(open("stderr-file", 1), 2) 
detach 
quit 

Diese has been automated als Werkzeug bezeichnet dupx.

+0

Nice one! ...... – hek2mgl

Verwandte Themen