2011-01-05 6 views
0

私は、次の操作を実行したいと思います:プロセスをbashのファイルにリンクすることはできますか?

私は、ファイルFにプロセスAをリンクしたい:

  • Fがクラッシュする。消える場合。
  • 仕上げFのみが消えるだろう。

これは可能ですか?どうもありがとうございました。

+0

達成するために。 –

+0

は、私は2つのプロセスを監視したいので、そのうちの一つがクラッシュした場合、あまりにも他の1クラッシュさせます。他のプロセスが同じPIDで始まる可能性があるので、PIDで強制終了するのは良い方法ではありません。そのため、私はPIDの使用を避ける方法を探しています。 –

答えて

0

あなたはPIDを避けるべきではありません。それらはプロセス識別子であり、使用されることを意図しています。

bashは自動的に子供がそれが開始処理監視します。最新のバックグラウンドプロセスIDは$!で管理されています。 Bashは '%n'構文を使ってジョブ制御をサポートしています。

トラップできた子procsのステータストラップSIGCHLDと変化し、そしてあなたはwaitコマンドを完了するために、1つまたはすべての子プロセスのために、「待つ」ことができます。ここで

が開始されている「JOB1」と「JOB2」で構成され、あなたの2つのプロセスのモニタリングの大まかな近似、あるサンプルスクリプト:

あなたがしようとしているものを言った場合、それはおそらく役立つだろう
job1 & # start job1 in background 
j1pid=$! # get its process id 
job2 & # start job2 in background 
j2pid=$1 # get its process id 

trap 'err=1' ERR # trap all errors 
err= 
wait $j1pid # wait for job1 to complete 

# at this point job1 could have completed normally, 
# or either process could have had an error 

trap - ERR # revert to "normal" handling of most errors 

# kill the processes nicely, or abruptly 
# kill -TERM sends the TERM signal to the process, which it can trap 
# and do whatever pre-exit process is needed. 
# kill -9 cannot be trapped. 

for pid in $j1pid $j2pid ; do 
    kill -TERM $pid 2>/dev/null || kill -9 $pid 
done 
0

あなたはすでにLinux上ではほとんどこのプロパティを使用してファイルを持っています。プロセスを作成した場合は、そのプロセスが実行中に/ proc/procNumが存在します。たとえば、プロセス番号が1050の場合、プロセスが終了するまで/ proc/1050が存在します。このファイルを削除するとプロセスが終了するかどうかわかりませんが、両方を結びつけることができます。

+0

情報ありがとうございました!私はそれをチェックし、それは多くのファイルを含むディレクトリです。私はそれを取り除くことができません(たとえ私がsudoを使用しても)、私は私が探していることをすることができません。とにかくおかげで:) –

関連する問題