我正在使用一个使用PBS / Torque进行作业调度的计算集群。队列有时可能很长,例如,我现在有超过800个队列中提交的一些作业(由showq
报告,显示完整的作业列表,但据我所知不一定按执行顺序排列。)
我想知道我的工作所在队列中的位置;在我之前会处理多少?我希望得到一些输出:Job <id>: 417/862
。这样我至少会有一些进度和等待时间的迹象。但是,我还没有找到如何做到这一点。可以做到,怎么做?
答案 0 :(得分:0)
我不确定我是否可以指望排队的工作将按照showq
提供的顺序执行,但经过一些更多的研究,它看起来确实如此。
showq
打印的队列格式如下:
ACTIVE JOBS--------
[table headers]
[listing of active jobs]
IDLE JOBS--------
[table headers]
[listing of idle jobs]
BLOCKED JOBS----------
[table headers]
[listing of blocked jobs]
根据这种格式,我提出了以下bash脚本,在给定作业ID的情况下,在队列的空闲部分找到作业的位置:
job=$1
idlestart=`showq | grep "IDLE JOBS" -n | cut -d: -f1`
jobline=`showq | grep -n $job | cut -d: -f1`
place=`expr $jobline - $idlestart - 2`
echo "Idle Jobs section starts at line $idlestart"
echo "Job $job at line $jobline"
echo "Place in queue: $place"
示例输出:
$ ./placeinq 6565618
Idle Jobs section starts at line 343
Job 6565618 at line 387
Place in queue: 42