こんにちは G09 という名前のソフトウェアは、Linda を使用して並行して動作します。他のノード (ホスト) で並列の子プロセスを次のように生成します。
/usr/bin/ssh -x compute-0-127.local -n /usr/local/g09l/g09/linda-exe/l1002.exel ...other_opts...
ただし、マスター ノードがこのプロセスを強制終了すると、他のノードの対応する子プロセス、つまり compute-0-127 は終了せず、バックグラウンドで実行され続けます。現在、これらの孤立した Linda プロセスを持つ各ノードに手動で移動し、kill
. そのような子プロセスを強制終了する方法はありますか?
プロセスを強制終了する前に PSTREE の Pastebin 1 を確認し、親が強制終了された後に PSTREE の Pastebin 2 を
確認し
ます
。貼り付け
、申し訳ありません !(
Answer1 への更新
説明してくれてありがとう Martin
killme() { kill 0 ; } ; #Make calls to prepare for running G09 ;
g09 < "$g09inp" > "$g09out" &
trap killme 'TERM'
wait
ただし、Torque/Maui (ジョブの実行を処理する) がジョブ (このスクリプト) を強制終了すると、qdel $jobid
G09 によって開始されたプロセスがssh -x $host -n
バックグラウンドで実行されます。ここで何が間違っていますか?(G09 自体がこれらのプロセスを停止するため、正常終了は問題ありません。pstree
)qdel
bash
|-461.norma.iitb. /opt/torque/mom_priv/jobs/461.norma.iitb.ac.in.SC
| `-g09
| `-l1002.exe 1048576000Pd-C-C-addn-H-MO6-fwd-opt.chk
| `-cLindaLauncher/tmp/viaExecDataN6
| |-l1002.exel 1048576000Pd-C-C-addn-H-MO6-fwd-opt.ch
| | |-{l1002.exel}
| | |-{l1002.exel}
| | |-{l1002.exel}
| | |-{l1002.exel}
| | |-{l1002.exel}
| | |-{l1002.exel}
| | |-{l1002.exel}
| | `-{l1002.exel}
| |-ssh -x compute-0-149.local -n ...
| |-ssh -x compute-0-147.local -n ...
| |-ssh -x compute-0-146.local -n ...
| |-{cLindaLauncher}
| `-{cLindaLauncher}
`-pbs_demux
そして、qdel
それがまだ表示された後
461.norma.iitb. /opt/torque/mom_priv/jobs/461.norma.iitb.ac.in.SC
`-ssh -x -n compute-0-149 rm\040-rf\040/state/partition1/trirag09/461
l1002.exel 1048576000Pd-C-C-addn-H-MO6-fwd-opt.ch
|-{l1002.exel}
|-{l1002.exel}
|-{l1002.exel}
|-{l1002.exel}
|-{l1002.exel}
|-{l1002.exel}
|-{l1002.exel}
`-{l1002.exel}
ssh -x compute-0-149.local -n /usr/local/g09l/g09/linda-exe/l1002.exel
ssh -x compute-0-147.local -n /usr/local/g09l/g09/linda-exe/l1002.exel
ssh -x compute-0-146.local -n /usr/local/g09l/g09/linda-exe/l1002.exel
ここで何が間違っていますか?trap killme 'TERM'
間違っていますか?