Wie deaktiviere ich alles in crontab -l?


70

Ich möchte einfach alles anhalten. Führen Sie nichts aus, was auf aufgeführt ist crontab -l.

Antworten:


63

crontab -eKommentieren Sie dann jede Zeile aus, mit der Sie nicht laufen möchten #.


134

Sichern Sie zuerst die Crontab:

crontab -l > my_cron_backup.txt

Dann können Sie es leeren:

crontab -r

Etwas wiederherstellen:

crontab my_cron_backup.txt
crontab -l

2
Dies ist besonders hilfreich, wenn /tmpes beschädigt ist (und wenn Ihre Crontab -e verwendet mktempin /tmp.
— Kevin Lee

1
+1 Schließlich hat dies für mich funktioniert. Vielen Dank
— Pavan

@alex Dies sollte die akzeptierte Antwort sein
— Luis Ferrao

crontab -rist, wonach ich gesucht habe. Vielen Dank !
— Forzagreen

65

Haben Sie root-Zugang? Mach einfach eine Pause, Cron

sudo /etc/init.d/crond stop

Starten Sie es dann neu, wenn Sie bereit sind

sudo /etc/init.d/crond start

5
Dies setzt voraus, dass Sie crontab für alle Benutzer einschließlich root beenden möchten. Die ausgewählte Antwort und die Antwort von kubanskamac würden dies nur für den aktuellen (gewünschten?) Benutzer tun.
— Kevin K

Unser Crond-Service war eingestellt worden. Dies zeigte uns in die richtige Richtung, um zu überprüfen, ob crond lief, und neu zu starten.
— Paul

4
Wenn Sie auf Ubuntu sind, können Siesudo service cron stop
— Joel

1
Unter Debian ist dies /etc/init.d/cron stop.
— Faheem Mitha

2
@Faheem auf Debian ist es heutzutage auch service cron stop.
— Stephen Kitt

10

Wenn Sie vi als Editor verwenden, rufen Sie einfach den :%s/^/#/Befehlsmodus auf. In allen Zeilen (%) wird der Zeilenanfang (^) durch einen Hash (#) ersetzt (s ///).


Wenn Sie vi nicht als Standardeditor verwenden, können Sie die Verwendung von vi like "erzwingen" EDITOR=vi; crontab -eund dann den obigen Trick anwenden.
— Betlista

2
Das Kommando zum :%s/^#//
— Kommentieren

3

War mit den oben genannten Optionen nicht zufrieden, da es sich nicht um Einzeiler handelte.

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

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

Verwendungsbeispiel (bearbeitet, um anzuzeigen, dass Kommentare nicht deaktiviert werden)

$ 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

Wurde unter RHEL und AIX getestet und sollte sofort funktionieren, ohne dass etwas installiert werden muss


1
Kann auch nach bestimmten Details im cronjob crontab -l | suchen perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; print if /.+mytexttofind.+/'
— Jason

Könnten Sie bitte erklären, warum Kommentare nicht betroffen sind? Welches Muster verwenden Sie, um sie zu erkennen?
— Sopalajo de Arrierez

Hm, unter Debian Jessie bekomme ich folgende Fehlermeldung: crontab: usage error: file name must be specified for replace. Es scheint, dass Sie eine Datei (?) Angeben müssen, wenn Sie crontabohne Parameter arbeiten (dies ist die replaceStandardeinstellung).
— Freitag,

2

In meinen begrenzten Tests funktioniert das Setzen der Shell auf / bin / false. Sie werden weiterhin /opt/job.shin Ihren Protokollen die Ausführung sehen , aber es wird ein Noop sein:

SHELL=/bin/false

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

1

In jeder mir bekannten Unix / Linux-Variante:

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

Diese:

  • Deaktiviert die Crontabs aller Benutzer
  • aber nicht system / etc / crontab (/etc/cron.daily. etc.)
  • bleibt auch nach einem Neustart erhalten
  • ist ein Einzeiler, duh :)

1

Die Idee kam mir aus der Antwort von @segaps

Etwas deaktivieren:

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

Ermöglichen:

crontab -l | cut -c 3- | crontab

Das einzige Problem bei der von segaps bereitgestellten Lösung ist, dass die vom Benutzer bereits kommentierten Jobs auskommentiert werden.


0

Verwenden Sie dazu nano als Editor:

sudo env EDITOR=nano crontab -e

Kommentieren Sie dann jede Zeile aus, die Sie nicht mit # ausführen möchten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.