¿Cómo deshabilitar todo en crontab -l?

71

Solo quiero pausar todo. No ejecutes nada de lo enumerado crontab -l.

Alex
fuente

Respuestas:

64

crontab -eluego comente cada línea con la que no desea ejecutar #.

Gregg
fuente
135

Primero, haga una copia de seguridad del crontab:

crontab -l > my_cron_backup.txt

Entonces puedes vaciarlo:

crontab -r

Restaurar:

crontab my_cron_backup.txt
crontab -l
kubanczyk
fuente
2
Esto es particularmente útil cuando /tmpestá dañado (y si su crontab -e utiliza mktempen /tmp.
Kevin Lee
1
+1 Finalmente, esto es lo que funcionó para mí. Gracias
Pavan
@alex Esta debería ser la respuesta aceptada
Luis Ferrao
crontab -res lo que estaba buscando Gracias !
forzagreen
65

¿Tienes acceso root? Solo pausa cron

sudo /etc/init.d/crond stop

Luego reinícialo cuando estés listo

sudo /etc/init.d/crond start
muffinista
fuente
55
Eso supone que desea detener crontab para todos los usuarios, incluido el root. La respuesta seleccionada y la respuesta de kubanskamac lo harían solo para el usuario actual (¿deseado?).
Kevin K
nuestro servicio crond había sido detenido. Esto nos señaló en la dirección correcta para verificar si crond se estaba ejecutando y reiniciar.
Paul
44
Si estás en Ubuntu puedes usarsudo service cron stop
Joel
1
En Debian esto es /etc/init.d/cron stop.
Faheem Mitha
2
@Faheem en Debian hoy en día también lo es service cron stop.
Stephen Kitt
10

Si está utilizando vi como editor, simplemente ingrese :%s/^/#/en modo comando. En todas las líneas (%), sustituye (s ///) el comienzo de la línea (^) con un hash (#).

andunix
fuente
Si no está usando vi como editor predeterminado, puede "forzar" el uso de vi like EDITOR=vi; crontab -e, y luego puede usar el truco anterior.
Betlista el
2
Para descomentar, el comando es:%s/^#//
NP01
3

No estaba contento con las opciones anteriores, ya que no eran una sola línea.

Deshabilitar crontab -l | perl -nle 's/^([^#])/# $1/;print' | crontab

Para permitir crontab -l | perl -nle 's/^#\s*([0-9*])/$1/;print' | crontab

ejemplo de uso (editado para mostrar que no deshabilita los comentarios)

$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^([^#])/# $1/;print'|crontab
$ crontab -l
# Comment
# 0 0 * * 0 /opt/something.sh

$ crontab -l|perl -nle 's/^#\s*([0-9*])/$1/;print'|crontab
$ crontab -l
# Comment
0 0 * * 0 /opt/something.sh

Probé esto en RHEL y AIX, y debería funcionar sin necesidad de instalar nada

segaps
fuente
1
También puede buscar detalles específicos en el cronjob crontab -l | perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; print if /.+mytexttofind.+/'
Jason
¿Podría explicar por qué los comentarios no se ven afectados? ¿Cuál es el patrón que usas para detectarlos?
Sopalajo de Arrierez
Hm, en Debian Jessie me sale el siguiente error: crontab: usage error: file name must be specified for replace. Parece que tiene que especificar un archivo (?) Cuando lo utiliza crontabsin ningún parámetro (que es el replacepredeterminado).
fritzmg
2

En mis pruebas limitadas, configurar el shell en / bin / false funciona. Aún verá la /opt/job.shejecución en sus registros, pero será un noop:

SHELL=/bin/false

*/1 * * * *    root  /some/job.sh
ceniza
fuente
1

En cualquier versión de Unix / Linux que conozca:

mv /var/spool/cron  /var/spool/cron_is_disabled

Esta:

  • deshabilita los crontabs de todos los usuarios
  • pero no system / etc / crontab (/etc/cron.daily. etc.)
  • persiste durante un reinicio
  • es una línea, duh :)
kubanczyk
fuente
1

Tengo la idea de la respuesta proporcionada por @segaps

Deshabilitar:

crontab -l | awk '{print "# "$1}' | crontab

Para permitir:

crontab -l | cut -c 3- | crontab

El único problema con la solución proporcionada por segaps es que descomentará los trabajos, que ya han sido comentados por el usuario.

Sarvsav Sharma
fuente
0

Para hacer esto, usando nano como editor:

sudo env EDITOR=nano crontab -e

luego comente cada línea con la que no desea ejecutar #

Sam Smith
fuente