¿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.