Frage Wie alles in Crontab -l zu deaktivieren?


Ich möchte nur alles pausieren. Führe nichts aus, was auf gelistet ist crontab -l.


52
2017-12-14 22:34


Ursprung




Antworten:


crontab -e dann kommentiere jede Zeile aus, mit der du nicht laufen willst #.


50
2017-12-14 22:39





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

104
2017-12-14 22:41



Dies ist besonders hilfreich, wenn /tmp ist beschädigt (und wenn Ihre crontab -e verwendet mktemp im /tmp. - Kevin Lee
+1 Schließlich hat das für mich funktioniert. Vielen Dank - Pavan
@alex Dies sollte die akzeptierte Antwort sein - Luis Ferrao


Hast du Root-Zugang? Halte einfach Cron an

sudo /etc/init.d/crond stop

Dann starte es neu, wenn du bereit bist

sudo /etc/init.d/crond start

57
2017-12-14 22:46



Angenommen, Sie möchten crontab für alle Benutzer einschließlich root beenden. Die ausgewählte Antwort und Kubanskamacs Antwort würde es nur für den aktuellen (gewünschten?) Benutzer tun. - Kevin K
Unser Crond-Service wurde gestoppt. Dies zeigte uns in die richtige Richtung, um zu überprüfen, ob crond lief, und neu zu starten. - Paul
Wenn Sie auf Ubuntu sind, können Sie verwenden sudo service cron stop - Joel
Auf Debian ist das so /etc/init.d/cron stop. - Faheem Mitha
@Faheem auf Debian ist es heutzutage auch service cron stop. - Stephen Kitt


Wenn Sie vi als Editor verwenden, geben Sie einfach ein :%s/^/#/ im Befehlsmodus. In allen Zeilen (%) ersetzt er (s ///) den Zeilenanfang (^) durch einen Hash (#).


10
2017-12-15 10:46



Wenn Sie vi nicht als Standard-Editor verwenden, können Sie die Verwendung von vi wie "erzwingen" EDITOR=vi; crontab -eund dann kannst du den obigen Trick anwenden. - Betlista
Zum Auskommentieren ist Befehl :%s/^#// - NP01


War nicht zufrieden mit den oben genannten Optionen, da sie keine Liner waren.

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

Getestet auf RHEL und AIX, und sollte funktionieren, ohne dass etwas installiert werden muss


3
2017-09-12 10:31



Außerdem kann man im cronjob crontab -l | nach bestimmten Details suchen perl -nle 's / ^ # \ s * ([0-1 *]) / $ 1 /; drucken 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


In meinen eingeschränkten Tests funktioniert das Setzen der Shell auf / bin / false. Du wirst es immer noch sehen /opt/job.sh Ausführen in Ihren Protokollen, aber es wird ein Noop sein:

SHELL=/bin/false

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

2
2017-10-13 21:23





In jedem Geschmack von Unix / Linux, den ich kenne:

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

Diese:

  • deaktiviert Crontabs aller Benutzer
  • aber nicht system / etc / crontab (/etc/cron.daily. etc.)
  • bleibt über einen Neustart bestehen
  • ist ein One-Liner, duh :)

1
2017-11-05 17:12





Ich kam auf die Idee von @segaps

Etwas deaktivieren:

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

Ermöglichen:

crontab -l | cut -c 3- | crontab

Das einzige Problem mit der Lösung, die von segaps bereitgestellt wird, ist, dass die Jobs, die bereits vom Benutzer kommentiert wurden, auskommentiert werden.


0
2018-06-29 13:49





Verwenden Sie dazu nano als Editor:

sudo env EDITOR=nano crontab -e

dann kommentieren Sie jede Zeile, die Sie nicht ausführen möchten #


0
2017-12-13 21:32