如何确定作业在PBS队列中的位置?

时间:2012-11-28 16:44:12

标签: bash job-scheduling pbs

我正在使用一个使用PB​​S / Torque进行作业调度的计算集群。队列有时可能很长,例如,我现在有超过800个队列中提交的一些作业(由showq报告,显示完整的作业列表,但据我所知不一定按执行顺序排列。)

我想知道我的工作所在队列中的位置;在我之前会处理多少?我希望得到一些输出:Job <id>: 417/862。这样我至少会有一些进度和等待时间的迹象。但是,我还没有找到如何做到这一点。可以做到,怎么做?

1 个答案:

答案 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