2016-05-13 57 views

答えて

2
lsfError="**ERROR: Local jobs disabled. Please run through LSF only --" 
lsfExit=2 
lsfLog="$(getent passwd $(id -un) | cut -d: -f6)/.lsbatch/.lsf_${LSB_JOBID}.log" 
echo "**INFO: Verifying as LSF job ..." 
sleep 2s 
if [ -z "$LSB_JOBID" ]; then 
    echo "$lsfError"; exit $lsfExit 
elif [[ "$(bjobs $LSB_JOBID 2>&1)" =~ "not found" ]]; then 
    echo "**ERROR: Job $LSB_JOBID doesn't exist" > $lsfLog 
    echo "$lsfError"; exit $lsfExit 
elif [[ "$(bjobs -o 'command' -noheader $LSB_JOBID 2>&1)" != "$0" ]]; then 
    echo "**ERROR: Command not matched $(bjobs -o "command" -noheader $LSB_JOBID 2>&1) != $0" > $lsfLog 
    echo "$lsfError"; exit $lsfExit 
fi 
0

LSFは、$LSB_JOBIDとして、ジョブ環境でいくつかの環境変数を設定しますと、このことを確認するにはどうすればよいLSF

にのみbjobとして実行する必要があります。この環境変数が定義されているかどうかを確認するスクリプトを書くことができます。そうでない場合は、スクリプトをLSFジョブとして実行して終了するように指示してください。

+0

のようなものジョブID。 LSFが設定する他の環境変数は何ですか?これらの変数のドキュメントはありますか? –

+0

完全なリスト[ここ](https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.3/lsf_config_ref/lsf_envars_job_exec)があります。 dita?lang = en) –

+0

しかし、まだユーザーは、これらの変数を端末に設定して、スクリプトを実行して、bjobとして起動することはできません。スクリプトがこれらの変数がLSFか端末から継承されているかどうかを判断できませんでした –

0

私は同じプロセスグループ内resプロセスがあるかどうかをチェックすることができますので、あなたは、LSFジョブがresによって開始されていることが期待できると思い、私が取得することができた

_pgid=`ps -o pgid --no-headers -p $$` 
ps -o comm,pgid --no-headers | grep -qE '^res\s+'${_pgid// /}'$' || { echo "Must submit as LSF job!"; exit 1; } 
+0

psコマンドに-u $(id -un)を追加しました。 lsfではないときに終了しました。 すべてのbjobに対してresプロセスがある場合、どのresがどのbjobに属しているかを特定するには –

+0

ジョブのプロセスグループを使用して、この特定のジョブに関連する 'res'インスタンスを特定できると思います。編集をご覧ください。 – mustaccio

関連する問題