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:

  1. Ruft die Crontab des Benutzers mit crontab -l >crontab.txt.
  2. Bearbeiten Sie die Textdatei, indem Sie Auftragsspezifikationen hinzufügen, entfernen oder ändern.
  3. 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 Prozesses cron 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.
  • 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.

  • @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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.