Ich habe ein Skript erstellt, das einen Cron-Job basierend auf Benutzerspezifikationen hinzufügt, aber es funktioniert nicht, da ich Cron jedes Mal aktualisieren muss Ich füge einen Job in crontab hinzu. Gibt es eine Möglichkeit, cron zu aktualisieren, ohne den Prozess abzubrechen?
Antwort
Solange Sie Das Skript verwendet crontab
, um Auftragsspezifikationen für den Benutzer hinzuzufügen und zu löschen. Es wäre nicht erforderlich, den cron
-Dämon neu zu starten.
Auf der AIX 7.1 cron-Handbuchseite steht :
Wenn Sie Änderungen vornehmen An die crontab-Dateien mit dem Befehl
crontab
wird eine Nachricht gesendet, die angibt, dass die Änderung an den cron-Daemon gesendet wurde.
Siehe auch das crontab
Handbuch .
Der allgemeine Ablauf der Aktionen, die Ihr Skript ausführen würde take:
- Ruft die Crontab des Benutzers mit
crontab -l >crontab.txt
. - Bearbeiten Sie die Textdatei, indem Sie Auftragsspezifikationen hinzufügen, entfernen oder ändern.
- Laden Sie die Crontab des Benutzers mit den neuen Spezifikationen mit
crontab crontab.txt
.
Die Befehle im ersten und letzten Schritt müssen als Benutzer ausgeführt werden (der erste Schritt kann auch als crontab -l username >crontab.txt
als z root).
Dies funktioniert unter jedem Unix mit cron
.
Kommentare
- Was ist, wenn bereits Arbeitsplätze vorhanden sind? Muss ich es zuerst in dieselbe Textdatei einfügen und dann den neuen Job anhängen, bevor ich ihn in die Crontab lade?
- @Shan Wie bereits erwähnt, erhalten Sie die aktuelle Crontab für den Benutzer und ändern diese dann bevor Sie es erneut laden. Ja, Sie würden neue Jobs an die von
crontab -l
erstellte Datei anhängen.
Antwort
AIX 7.1 Die Cron-Handbuchseite sagt :
Die Der cron-Daemon liest die Konfigurationsdatei, wenn sie aktiviert ist und das Auflegesignal empfängt.
Also nur kill -HUP cron_pid
sollte es tun.
Kommentare
- Ich habe dies bereits versucht, möchte aber meine Konfiguration aktualisieren, ohne den Prozess abzubrechen
- @Shan Der Befehl
kill
sendet Signale an den Prozess. Im Allgemeinen können Prozesse durch Empfangen eines Signals beendet werden, d. H. Sie sterben tatsächlich ab. Im Fall des Prozessescron
verarbeitet es das Signal, stirbt nicht und liest seine Konfiguration erneut. - Der von Ihnen angegebene Teil der Manpage ist unter Bezugnahme auf cron ' s Konfigurationsdatei ,
/etc/cronlog.conf
, nicht auf die crontab-Dateien selbst. - @JeffSchaller ist korrekt. Sie müssen entweder -9 cron_pid beenden oder crontab für eine Crontab-Datei verwenden, wie von Kusalananda vorgeschlagen in der anderen Antwort, um die Crontab neu zu laden.
ch kann daraus keine Antwort auf diese Frage machen. Wenn ich eine Crontab-Datei und ein HUP-Cron manuell bearbeite, wird der neue Cron-Job nicht ausgeführt.