2

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

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

4

1 回答 1

1

我不确定我是否可以指望排队的作业会按照 提供的顺序执行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
于 2012-12-06T11:17:33.043 回答