ssh - Use qdel para borrar todos mis trabajos a la vez, no de a uno por vez
cluster-computing jobs (9)
Esta es una pregunta bastante simple, pero no he podido encontrar una respuesta.
Tengo un gran número de trabajos ejecutándose en un clúster (> 20) y me gustaría eliminarlos todos y comenzar de nuevo.
Según este sitio , debería poder hacer lo siguiente:
qdel -u netid
para deshacerse de todos ellos, pero en mi caso eso vuelve:
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
lo que obviamente indica que el comando no funciona.
Solo para verificar, lo hice:
qstat -u <username>
y obtengo una lista de todos mis trabajos, pero:
qdel -u <username>
también falla
Encontré la respuesta enterrada en un antiguo hilo de supercluster.org :
qselect -u <username> | xargs qdel
Funcionó sin problemas.
No puedo comentar, pero basándome en lo que Gabriel respondió:
qselect -u <username> | xargs qdel
qselect -u <username> -s <state> | xargs qdel
<state>
sería R
para ejecutar trabajos.
qselect le permitirá seleccionar un trabajo basado en otros criterios, como recursos solicitados (-l), cola de destino (-q) ...
qdel -u <username>
solo funcionará con SGE
Otra posibilidad es hacer qdel all
. Elimina todos los trabajos de todos. Cuando no tiene acceso para el trabajo de otras personas, solo elimina sus trabajos.
No es la solución más hermosa, ¡pero sin duda es la más corta!
Para UGE:
qstat -u | gawk ''{print $ 1}'' | xargs qdel
Simplemente use el siguiente comando:
qdel all
Cancelará todos los trabajos que se ejecutan en el clúster.
Tratar
$ qdel {id1..id2}
Así por ejemplo:
$ qdel {1148613..1148650}
a veces, un grep/cut
simple también puede ayudar: qstat | grep $USER | cut -d. -f1 | xargs qdel
qstat | grep $USER | cut -d. -f1 | xargs qdel
De esta forma, también podemos grep
en una palabra clave particular para los trabajos y eliminarlos.
HTH
# 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
qstat | cut -d. -f1 | sed "s; /(.*/) 0;qdel /1;" | bash
poder de Sed.