blog

リア向け。

ターミナル下部にジョブの実行状況を表示

(最初python側でsleepさせてたんですが、この環境だとうまく動かないらしい)
screenのhardstatusで表示させます。
screenのbacktickはコマンドの実行結果を取得することができるので、
ジョブ状況を取得するスクリプト書いてbacktickで読みます。

某環境向けジョブ状況取得スクリプト(使い回しのコピペ作成です)
~/.screen/llqmonitor.pyとでも保存してください
usernameは自分のものに書き換えること。

#!/usr/bin/env python
import subprocess
username = "your username"

qstat = subprocess.Popen(['llq'],stdout=subprocess.PIPE)
grep  = subprocess.Popen(['grep',username],
                         stdin =qstat.stdout,
                         stdout=subprocess.PIPE)
status = [ line.split() for line in grep.stdout.readlines() ]
#jobid,user,day,time,status,priority,category
running = [ row for row in status if row[4]=="R" ] 
waiting  = [ row for row in status if row[4]=="I" ]

if len(running)>0:
    running_names = "(%s)"%(",".join([row[0] for row in running]))
else:
    running_names = ""
print "%d:rest %d%s:running %d:waiting"%(
    len(status),len(running),running_names,len(waiting))

こちらを.screenrcに書きます

backtick 1 30 30 python $HOME/.screen/llqmonitor.py # interval 30 sec
hardstatus alwayslastline
hardstatus string '%{kC}Host:%{kC}%H %-w %{ky}%n %t%{kC} %+w %= %1` %Y/%m/%d %{kC}%C%a'

screenを起動すればジョブ状況が常に表示されるはずです。

こんなかんじ
f:id:nasing-i:20131104174101p:plain