Come disabilitare tutto in crontab -l?


71

Voglio solo mettere in pausa tutto. Non eseguire nulla elencato crontab -l.

Risposte:


64

crontab -equindi commenta ogni riga con cui non vuoi correre #.


135

Innanzitutto, esegui il backup del crontab:

crontab -l > my_cron_backup.txt

Quindi puoi svuotarlo:

crontab -r

Ripristinare:

crontab my_cron_backup.txt
crontab -l

2
Ciò è particolarmente utile quando /tmpè corrotto (e se il tuo crontab -e lo utilizza mktempin /tmp.
Kevin Lee

1
+1 Infine, questo è ciò che ha funzionato per me. Grazie
Pavan,

@alex Questa dovrebbe essere la risposta accettata
Luis Ferrao,

crontab -rè quello che stavo cercando. Grazie !
forzagreen,

65

Hai accesso root? Basta mettere in pausa cron

sudo /etc/init.d/crond stop

Quindi riavvialo quando sei pronto

sudo /etc/init.d/crond start

5
Ciò presuppone che si desidera interrompere crontab per tutti gli utenti, incluso root. La risposta selezionata e la risposta di kubanskamac lo farebbero solo per l'utente corrente (desiderato?).
Kevin K,

il nostro servizio di assistenza era stato interrotto. Questo ci ha indicato nella giusta direzione per verificare se la crond era in esecuzione e riavviare.
Paolo,

4
Se usi Ubuntu puoi usaresudo service cron stop
Joel,

1
Su Debian questo è /etc/init.d/cron stop.
Faheem Mitha,

2
Oggi è anche @Faheem su Debian service cron stop.
Stephen Kitt,

10

Se stai usando vi come editor, entra :%s/^/#/nella modalità di comando. In tutte le righe (%), sostituisce (s ///) l'inizio della riga (^) con un hash (#).


Se non stai usando vi come editor predefinito, puoi "forzare" l'uso di vi come EDITOR=vi; crontab -e, e puoi usare il trucco sopra.
Betlista,

2
Per rimuovere il commento, il comando è:%s/^#//
NP01

3

Non ero contento delle opzioni di cui sopra dato che non erano una fodera.

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

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

esempio di utilizzo (modificato per mostrare che non disabilita i commenti)

$ 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

Questo è stato testato su RHEL e AIX e dovrebbe funzionare senza necessità di installazione


1
Inoltre puoi cercare dettagli specifici nel cronjob crontab -l | perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; stampa if /.+mytexttofind.+/'
Jason

Potresti spiegare perché i commenti non sono interessati? Qual è lo schema che usi per rilevarli?
Sopalajo de Arrierez,

Hm, sotto Debian Jessie ottengo il seguente errore: crontab: usage error: file name must be specified for replace. Sembra che tu debba specificare un file (?) Quando lo usi crontabsenza alcun parametro (che è replacedi default).
fritzmg

2

Nel mio test limitato, impostare la shell su / bin / false funziona. Vedrai comunque l' /opt/job.shesecuzione nei tuoi registri, ma sarà un noop:

SHELL=/bin/false

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

1

In qualsiasi versione di Unix / Linux che conosco:

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

Questo:

  • disabilita i crontab di tutti gli utenti
  • ma non system / etc / crontab (/etc/cron.daily. ecc.)
  • persiste durante un riavvio
  • è un liner, duh :)

1

Ho avuto l'idea dalla risposta fornita da @segaps

Disabilitare:

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

Abilitare:

crontab -l | cut -c 3- | crontab

L'unico problema con la soluzione fornita da segaps è che decommenterà i lavori, che sono già commentati dall'utente.


0

Per fare questo, usando nano come editor:

sudo env EDITOR=nano crontab -e

quindi commentare ogni riga che non si desidera eseguire con #

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.