2016-07-21 15 views
2

Linux RHEL 6.6のボックスにnohup -p <processid>を実行できない状況があります。このオプションはサポートされていません。私はマンページを読んでいました.Linuxではオプションとして--help--versionしかありませんでした。PIDが既に実行中のプロセス(AIX nohup -pに類似)nohup`

nohup -pため、他の代替は、実行している端末の退出を生き残るために既に実行中のプロセスを可能にするために、ありますか?この

+1

は...また、率直に言って、 'nohup'は、一般的にはかなり無駄です。 stdin、stdout、およびstderrを非TTYソースにリダイレクトします。 HUPが破棄されるまでの信号設定するためのシェルを教えて、あなたのシェルのプロセス・テーブルからのジョブを削除するには、 'disown'組み込みを使用して、あなたはそれ以外のコマンドを使用しなくても行うだろうnohup'すべてを'達成しました。 –

+0

@CharlesDuffy 3ステップ、それは1つの 'nohup'で行うことができますか? –

+2

ああ、しかし、あなたの3つのステップが、ユーザは、彼らがやっていることを考えると、あなたの「1 'nohup'は」全く脳死' nohup.out'リダイレクト先のデフォルトを持っているのに対し、明示的な意思決定を行うために強制します。 –

答えて

4

パートは簡単です:あなたのシェルのプロセス・テーブルからジョブを削除するには、disownを使用することができます。

ではない部分がで、TTYからstdoutとstderrを簡単にリダイレクトしています。これを行うには、プロセスの制御を取るためにgdbを使用し、標準入力、stdoutとstderr(あなたがこれも同様に生き残るために必要な他のサブプロセスやスレッド上で行われていることを確認する必要がありますのでご注意を置き換えるために、それを伝えることができます終了操作):

# 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 

このhas been automateddupxと呼ばれるツールとして。

+0

いいね!...... ...... – hek2mgl

関連する問題