UGE利用マシンにぶん投げた大量のジョブ情報の中から欲しいところだけ一括表示(TSUBAMEやその他UGE利用計算機向け)
TSUBAMEみたいな、UGE*1*2でジョブ管理している計算機に大量のジョブを投げたは良いものの、qstat
で一覧を見てもどれがどの計算だかわかんねえやこれってなる人いますか?私のことです。いやジョブ名なりスクリプト名なり変えろよって話なのかもしれないですけど(みんなどうやっているんだろう)。
自分の場合、分子動力学とかをやっているのだが、条件が違うだけでやっている計算は同じという事も多い。それ故ジョブスクリプト名は使いまわしで、ディレクトリを変えてジョブを投げるタイプ。ジョブ名を付けていたこともあるがそれはそれで面倒。というかファイル名を変えるとえらいことになるタイプなので…。メールオプションも開始時は一気に投げるとき逆に大変なことになるから付けていない。終了時の通知くらいはつけようかと思っているけど。
という事で投下中のジョブ一覧をみられるスクリプトを組んでみた。ちょっと最近大量の計算を投げて頭がぐっちゃぐちゃになっていたのだがこれでだいぶ楽になった。スクリプト組むのはまだ全然慣れていないのでちょっと試行錯誤があったけど。
こんな感じ。getjob.sh
という名前で保存している。
#! /bin/sh ## get job_ids with qstat currentjob=`qstat | awk '{print $1}' | sed '/job-ID/d' | sed '/-/d'` # echo "$currentjob" NR=`echo "$currentjob" | awk 'END{print NR}'` echo number of jobs: $NR ## details of each job for i in `seq 1 $NR` do # echo ${i} ## get each job information JOBi=`echo "$currentjob" | sed -n ''${i}' p'` # JOBi=`qstat | awk '{print $1}' | sed '/job-ID/d' | sed '/-/d' | sed -n -e ${i}p` ## display each job information echo job_number: $JOBi qstat -j $JOBi | grep -e cwd -e job_name -e job_state -e start_time echo "" done
コメント部分だが、自分の場合「いらねえなこれ」ってなった部分や一時的にオフにしているところは#1つ、普通に説明とかのコメントは#を2つつけるようにしている。適当な英語はご愛嬌。
実際に動かすとこんな感じで標準出力に出てくる。##のコメントは追記。
number of jobs: 10 job_number: xxxxxx ## 実際はジョブID cwd: /hoge/hogehoge/hogehoge_hoge ## 投入したディレクトリ job_name: hoge.sh ## 投入したジョブ名 start_time 1: 10/08/2021 12:50:36.105 job_state 1: r job_number: yyyyyyy ## 実際にはジョブID cwd: /hoge/hogehoge/hogehoge_hoge/foo/bar ## 投入したディレクトリ job_name: hoge_hoge_hoge.sh ## 投入したジョブ名 start_time 1: 10/08/2021 17:37:44.980 job_state 1: r ## 以下省略(あと8個はさすがに長い)
自分の場合ジョブID、スタート時間、ディレクトリとスクリプト名をとりたかったのでこんな感じで組んでいる。前述の通りメールオプションの終了通知と合わせるともっと便利なのかもしれない。
*1:UGEについてはこちらなど参照: https://www.hpc-technologies.co.jp/uge
*2:TSUBAMEの利用手引き: https://helpdesk.t3.gsic.titech.ac.jp/manuals/handbook.ja/jobs/