ジョブ監視

バッチジョブ(PBS)で計算を流しているときに、自分のジョブが終わったのを確認して新たなジョブをqsubするシェルスクリプトを書く。

  • 15分ごとにdoループの中を実行する。INTRVLの値は秒。
  • qstatコマンドで拾われる文字列の中にjobnameがあるときは、まだ実行中なので何もしない。
  • jobnameがないときは変数RSLTが空になるので、次のワーキングディレクトリにcdしてqsubする。
  • breakでdoループを抜ける。監視を終了する。
#!/bin/sh

INTRVL=900

while true
do
  sleep $INTRVL
  RSLT=`qstat | grep jobname`

  if [ "$RSLT" = "" ] 
  then
    cd directory-name ; qsub submit.sh
    break;
  fi
done

簡単すぎるこのスクリプトを実行しっぱなしにすれば、少しは業務が楽になるはず。