使用qdel立即删除所有作业,而不是一次删除一个

时间:2015-03-04 15:07:05

标签: ssh cluster-computing jobs

这是一个相当简单的问题,但我找不到答案。

我在群集中运行了大量作业(> 20),我想将它们全部删除并重新开始。

根据this site,我应该能够做到:

qdel -u netid

全部摆脱它们,但在我的情况下返回:

qdel: invalid option -- 'u'
usage: qdel [{ -a | -c | -p | -t | -W delay | -m message}] [<JOBID>[<JOBID>]|'all'|'ALL']...
   -a -c, -m, -p, -t, and -W are mutually exclusive

这显然表明该命令不起作用。

只是为了检查,我做了:

qstat -u <username>

我确实得到了所有工作的清单,但是:

qdel -u <username>

也失败了。

9 个答案:

答案 0 :(得分:66)

找到了埋在old supercluster.org thread中的答案:

qselect -u <username> | xargs qdel

完美无缺地工作。

答案 1 :(得分:33)

以加布里埃尔的回答为基础:

qselect -u <username> | xargs qdel

qselect -u <username> -s <state> | xargs qdel

<state>R用于运行作业。

qselect将允许您根据其他标准选择作业,例如ressources ask(-l),destination queue(-q)...

qdel -u <username>

仅适用于 SGE

答案 2 :(得分:9)

有时一个简单的grep/cut也可以提供帮助: qstat | grep $USER | cut -d. -f1 | xargs qdel

这样我们也可以grep对作业的特定关键字进行删除。

HTH

答案 3 :(得分:3)

# Delete all jobs owned by the current user.
# 
# Command breakdown:
# ------------------
#
# qselect
# -u selects all jobs that belong to the current user
# -s EHQRTW selects all job states except for Complete
#
# xargs
# --no-run-if-empty Do not run qdel if the result set is empty
#                   to avoid triggering a usage error.
#
# qdel
# -a delete jobs asynchronously
#
# The backslashes are a trick to avoid matching any shell aliases.

\qselect -u $(whoami) -s EHQRTW | \xargs --no-run-if-empty \qdel -a

答案 4 :(得分:2)

另一种可能性是qdel all。它删除了所有人的所有工作。如果您无法访问其他人的工作,则只会删除您的工作。

这不是最美丽的解决方案,但肯定是最短的!

答案 5 :(得分:2)

尝试

$ qdel {id1..id2}

例如:

$ qdel {1148613..1148650}

答案 6 :(得分:1)

对于UGE:

qstat -u | gawk'{print $ 1}'| xargs qdel

答案 7 :(得分:0)

qstat | cut -d. -f1 | sed "s;   \(.*\) 0;qdel \1;" | bash

sed的力量。

答案 8 :(得分:-1)

只需使用以下命令:

qdel all           

它将取消在群集上运行的所有作业。