Cron nach dem Ändern der Crontab-Datei neu starten?


432

Muss ich cron nach dem Ändern der crontable-Datei neu starten?


8
Um die Antwort von @ leonbloy nicht zu ignorieren, stellte ich fest, dass die Implementierung des ersten Cron-Jobs meines Linux (ein korrekt formatierter Job pro Minute) erst nach einem Neustart des Systems wirksam wurde. sudo service cron restartwurde nicht getestet.
Geotheory

1
@geotheory yikes Ich hoffe, ich muss meinen Prod-Server nicht jedes Mal neu starten, wenn ich meine Crontab aktualisiere (und ich nicht).
JCollum

Antworten:


613

Nein.

Von der Cron-Manpage :

... cron überprüft dann die Änderungszeit auf allen Crontabs und lädt die geänderten neu. Daher muss cron nicht neu gestartet werden, wenn eine crontab-Datei geändert wird

Aber wenn Sie nur sicherstellen möchten, dass es trotzdem erledigt ist,

sudo service cron reload

oder

/etc/init.d/cron reload

10
Wenn Sie den Ordner cron.d verwenden, werden symlinked crontabs nicht neu geladen. Wie kann ich ein Nachladen erzwingen?
CMCDragonkai

13
Ah, so einfach ist das. Es ist jetzt sudo service cron restart.
CMCDragonkai

21
Bessere Option ist das Neuladen - es kann von Nicht-Root-Benutzern initiiert werden:/etc/init.d/cron reload
Honza

8
@CMCDragonkai Möglicherweise crondanstelle von cron.
Cees Timmerman

32
Das einzige Problem mit dieser Antwort ist, dass es nicht immer wahr ist. Siehe den Kommentar der Geotheorie unter der Frage. Auch ich war davon gebissen. Ich nahm eine Änderung an der Crontab-Datei über vor sudo crontab -e, speicherte die Änderung bis Ctrl + Xund ging davon aus, dass ich cronsie abholen würde (da diese Antwort so hoch bewertet wurde). Dann, Tage später, berichtet mein Kunde, dass der Cron immer noch im alten Zyklus läuft. Wenn Sie also auf Nummer sicher gehen möchten, starten Sie entweder crondas System oder das System neu und spielen Sie nicht mit Zeitverschwendungstests herum, die Sie trotz dieser hoch bewerteten Antwort durchführen müssen.
Dan Nissenbaum

52

Unter CentOS mit cPanel sudo /etc/init.d/crond reloadist der Trick.

Auf CentOS7: sudo systemctl start crond.service


3
Vielen Dank für die CentOs 7 Linie
Mathieu de Lorimier

1
//, Um neu zu laden crond, anstatt es nur auf dem zunehmend schrecklichen System zu starten, führen Sie es aus sudo systemctl reload crond.service.
Nathan Basanese

@NathanBasanese Das Neuladen cronauf SystemD gilt jetzt als schwarze Magie: sudo systemctl reload crondschlägt mit Failed to reload cron.service: Job type reload is not applicable for unit cron.service.(Ubuntu 18.04) fehl . Lesen Sie: Auf geht's, wir alle sind vom Syndrom betroffen: "SystemD, es kann nur eines geben". Wenn das Nachladen nicht automatisch hinter den Kulissen erfolgt, sind Sie pleite! Denken Sie nicht einmal daran, es zu reparieren, wie Sie es in den letzten 3 (oder mehr) Jahrzehnten getan haben! Lesen Sie: Die Welt von Windows hat Debian endlich verschluckt: Wenn etwas Seltsames unter der Haube ist, was werden Sie tun? Neu starten!
Tino

Neustart ist mehr als nur ein Neuladen. Gibt es für Centos keine saubere Nachladeoption?
Ωmega

@Tino können Sie cronie
Bob

27

Ich hatte ein ähnliches Problem mit 16.04 VPS Digital Ocean. Wenn Sie Crontabs wechseln, stellen Sie sicher, dass Sie ausgeführt werden

sudo service cron restart 

Es hat bei mir funktioniert. Vielen Dank
Tien Nguyen

Ich sehe nur reloadist genug. Keine Notwendigkeit restart. Vielen Dank. :)
Tien Nguyen

12

Abhängig von der Verteilung kann die Verwendung von "cron reload" nichts bewirken. So fügen Sie ein Snippet aus init.d / cron ein (Debian Squeeze):

reload|force-reload) log_daemon_msg "Reloading configuration files for periodic command scheduler" "cron"
    # cron reloads automatically
    log_end_msg 0
    ;;

Einige Entwickler / Betreuer haben sich auf das Neuladen verlassen, aber nicht. In diesem Fall gibt es keine Möglichkeit, das Neuladen zu erzwingen. Ich generiere meine Crontab-Dateien als Teil einer Bereitstellung, und wenn sich die Länge der Datei nicht irgendwie ändert, werden die Änderungen nicht neu geladen.


9

Versuchen Sie dies für Centos 7: Service Crond Reload


6

Probieren Sie es aus: sudo cron reload Es funktioniert für mich unter Ubuntu 12.10


Funktioniert nicht auf meine Raspberry Pi 3+ mit Ubuntu 18.04.2 LTS
Jan

3

Versuchen Sie dies: service crond restartDaher ist es crondnicht cron.


crondnicht anerkannter Service. Es funktioniert cronfür mich. Mein Betriebssystem ist Ubuntu 18.04
Tien Nguyen

1

Es gibt Fälle, in denen cron neu gestartet werden muss, damit das Startskript funktioniert. Es ist nichts Falsches daran, den Cron neu zu starten.

sudo service cron neu starten


0

1) Wenn Datei /var/spool/cron/crontabs/rootüber SFTP-Client bearbeitet werden muss service cron restart. Nachladeservice funktioniert nicht.

2) Wenn Sie die Datei /var/spool/cron/crontabs/rootüber Console Linux (Nano, MC) bearbeiten - Neustart NICHT erforderlich.

3) Wenn Sie Cron über bearbeiten crontab -e- Neustart NICHT erforderlich.


0

Ubuntu 18.04 * Verwendung: /etc/init.d/cron {start | stop | status | restart | reload | force-reload}

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.