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.