エラーコードをググってたら3日経っていた

*URL名はちょっと前までよくやっていたファイル名の付け方を現したものです(実話)。素人が一生懸命スパコンやWSL等と戦った時の記録。エラーコードをググってもよくわからない世界がそこにはあるのです。

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、スタート時間、ディレクトリとスクリプト名をとりたかったのでこんな感じで組んでいる。前述の通りメールオプションの終了通知と合わせるともっと便利なのかもしれない。