Eliminar todos los trabajos `at`

32

Sé que para eliminar un attrabajo programado tengo que usar atrm "numjob1 numjob2", pero ¿hay una manera fácil de hacerlo para todos los trabajos?

robob
fuente

Respuestas:

31

Puede ejecutar este comando para eliminar todos los trabajos en atq

 for i in `atq | awk '{print $1}'`;do atrm $i;done
Pradeepchhetri
fuente
2
variación de esta respuestaat -l | awk '{printf "%s ", $1}' | xargs atrm
Sergiy Kolodyazhnyy
10

Podrías hacer algo como esto:

for i in $(atq | cut -f 1); do atrm $i; done
DaveEmme
fuente
En FreeBSD su cut -f3primera columna es la fecha
David Jashi
7

Esto me parece una línea corta:

atrm $(atq | cut -f1)
usuario78969
fuente
1

Aquí está mi versión xargs que evita los frenos y es de esperar intuitiva:

atq | cut -f 1 | xargs atrm

También puede seleccionar trabajos específicos por marca de tiempo / ID de usuario y luego eliminarlos:

atq | grep "2018-10-22 16:" | cut -f 1 | xargs atrm
Thyag
fuente
0

Tenía más de 58k trabajos en el atd (alguien reinició el servidor y por alguna razón el servicio atd no se inició). Eliminar los trabajos usando atrm es muy doloroso para una cola muy alta.

Detuve atd y eliminé todos los directorios de / var / spool / atjobs y los archivos de / var / spool / atspool . Para mí funcionó.

rm -rf /var/spool/atjobs/* ; rm /var/spool/atspool/*
Felipe
fuente
Nunca dices nada sobre comenzar de atdnuevo, y si eso fue exitoso, ni mencionas para qué Unix sería una solución adecuada. ¿Cómo se aseguró de que los trabajos de otros usuarios no fueran eliminados?
Kusalananda
¡Okay! ¡Lo siento! Necesito iniciar atd después del proceso. Mi solución es para "SUSE Linux Enterprise Server 12". Pero creo que puede usarse en otras distribuciones. Encontré la información de directorios en "man". En mi situación, solo root está usando atd, luego eliminar los archivos fue seguro.
Felipe