1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

qsubして、雑にジョブが終わるまで待つ

Last updated at Posted at 2019-02-22

概要

何かのジョブを投げるスクリプトなり、コマンドがあって、
それの実行を待ちたいとき、いろいろな方法があるとおもうが、
一つの例。

まとめ

いくつかあるので、それぞれスクリプト例をあげてみる。

ほかに、自分のジョブがなくてただまつだけ

共有計算機であれば、自分のidのジョブだけとかいろいろあるとおもいますが、
今回のは、たんに、qstat の結果だけを利用する。

ジョブのスクリプト

some_jobs_script.sh
# !/bin/bash
sleep 30

ジョブを投げてそれを待つスクリプト

wait.sh
# !/bin/bash


function waitfunction() {
  while :
  do
    RET=$(qstat | wc -l)
    if [ $RET -eq 0 ]; then
      return
    else
      echo "Sleep 5sec"
      sleep 5
    fi
  done
}

echo "Start"
qsub  some_jobs_script.sh
waitfunction
echo "Done"

qstatで出力される特定の文字列がなくなるのを待つ。

ジョブに名前がついていればそれで待つこともできる。
注意点としては、ジョブの名前が長い場合、qstatで出てくるかは、確認する

以下のスクリプトは、

wait_qsub_by_name.sh
# !/bin/bash


function waitfunction_by_jobname() {
  while :
  do
    RET=$(qstat | grep $1 | wc -l)
    if [ $RET -eq 0 ]; then
      return
    else
      echo "Sleep 60sec"
      sleep 60
    fi
  done
}

#
echo "Start"
# 最初の引数($1)の名前がでてこなくなるまで待つ
waitfunction_by_jobname $1
echo "Done"

使い方例

大量のジョブを投げるこのときに、接頭辞などでJOBNAMEをつける。
./wait_qsub_by_name.sh JOBNAME
``

## TODO 特定のjobidをまつ

qsubしたときに、ジョブのIDがわかれば、それをまつことができるのではないか?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?