通过grepping qstat输出并将jobid发送到qdel来删除作业?

时间:2011-01-03 22:25:25

标签: bash grep pbs

我在群集上使用PBS作业调度程序,我想使用qdel删除早于某个日期的作业;或者,能够按日期对qstat的结果进行排序就足够了。

qstat给出了这个输出:

job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
 326539 0.50500 run        user         r     01/06/2011 11:13:34 all.q@compute-0-0.local            1        
 326594 0.50500 run        user         r     01/06/2011 11:13:34 all.q@compute-0-0.local            1    

我可以删除qdel的作业:

qdel 326539

可以使用grep找到我要删除的作业:

qstat > foo; grep 01/06 foo

我目前的工作是将上面的输出粘贴到电子表格中,按作业ID排序,然后qdel {min..max}

我可以将这些步骤合并到一个命令中吗?

协助表示赞赏。

1 个答案:

答案 0 :(得分:10)

AWK

qstat | awk '$6 ~ "01/06" {cmd="qdel " $1; system(cmd); close(cmd)}'

#!/bin/bash

match="01/06"

while read job; do
  set -- $job
  if [[ $6 =~ $match ]]; then
    qdel "$1"
  fi
done < <(qstat)

如果您想进行干跑,请将qdel "$1"更改为echo qdel "$1",看看它会做什么。