10

qdelクラスタでPBSジョブスケジューラを使用していますが、 ;を使用して特定の日付より古いジョブを削除したいと思います。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つのコマンドに組み合わせることができますか?

支援に感謝します。

4

1 に答える 1

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"それが何をしたかを確認します。

于 2011-01-07T04:41:42.050 に答える