¿Cómo deshabilitar todo en crontab -l?


71

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

Respuestas:


64

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


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

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

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 (#).


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


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

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 :)

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.


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 #

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.