web-dev-qa-db-fra.com

Utilisez qdel pour supprimer tous mes travaux à la fois, pas un à la fois.

C'est une question assez simple mais je n'ai pas trouvé de réponse.

Un grand nombre de travaux sont en cours d'exécution dans un cluster (> 20) et j'aimerais les supprimer tous et recommencer.

Selon ce site je devrais pouvoir faire juste:

qdel -u netid

se débarrasser de tous, mais dans mon cas, cela revient:

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

ce qui indique évidemment que la commande ne fonctionne pas.

Juste pour vérifier, j'ai fait:

qstat -u <username>

et je reçois une liste de tous mes emplois, mais:

qdel -u <username>

échoue également.

40
Gabriel

Trouvé la réponse enfouie dans un ancien fil de supercluster.org :

qselect -u <username> | xargs qdel

Travaillé sans faille.

65
Gabriel

Je ne peux pas commenter, mais en me basant sur ce que Gabriel a répondu:

qselect -u <username> | xargs qdel

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

<state> serait R pour les travaux en cours uniquement.

qselect vous permettra de sélectionner une tâche en fonction d'autres critères, tels que ressources demandées (-l), file d'attente de destination (-q) ...

qdel -u <username>

ne fonctionnera qu'avecSGE

31
Y. Boursin

parfois, un simple grep/cut peut aussi aider: qstat | grep $USER | cut -d. -f1 | xargs qdel

De cette façon, nous pouvons aussi grep sur un mot clé particulier pour les travaux et les supprimer. 

HTH

9
asifzuba
# 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
2
Jason

Essayer 

$ qdel {id1..id2}

Donc par exemple:

$ qdel {1148613..1148650}
2
CiaranWelsh

Une autre possibilité est de faire qdel all. Il supprime tous les emplois de tout le monde. Lorsque vous n'avez pas accès au travail d'autres personnes, cela supprime uniquement vos travaux.

Ce n'est pas la plus belle solution, mais c'est sûrement la plus courte!

2
pl-94

Pour UGE:

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

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

le pouvoir de sed.

0
MrMimic