Frage

Ich versuche, mit dem hervorragenden CronEdit-Gem ein Web-Frontend für Crontab in Ruby zu schreiben.Ich habe den Crontab-Quellcode von Dillon Cron durchgesehen und festgestellt, dass er eine bestimmte Datei aktualisiert, sodass der Daemon die Cron-Liste beim nächsten Scan aktualisiert.

In man crontab für VixieCron heißt es:

Darüber hinaus überprüft Cron jede Minute, um festzustellen, ob sich die Modime des Spulenverzeichnisses (oder die Modime ON /etc /Crontab) geändert hat. Wenn dies der Fall ist, wird Cron die Modime bei allen Crontabs untersucht und diejenigen neu laden, die sich geändert haben.Daher muss Cron nicht neu gestartet werden, wenn eine Crontab-Datei geändert wird.Beachten Sie, dass Der Befehl crontab(1) aktualisiert die Modtime des Spool-Verzeichnisses immer dann, wenn es Ändert eine Crontab.

Gibt es eine plattformunabhängige Möglichkeit (Ubuntu, Red Hat, ArchLinux, Mac OS X), um sicherzustellen, dass der Daemon die Cron-Datei nach der manuellen Bearbeitung unbedingt aktualisiert?

War es hilfreich?

Lösung 3

Vielen Dank Gnibbler und Aaron.Ich habe gerade den Quellcode für die Edelsteine ​​„whenever“ und „cronedit“ für Ruby durchgesehen.Beide führen ein „crontab -“ aus, das die vorhandene Cron-Datei durch die aktualisierten Cron-Einträge ersetzt.Das bedeutet, dass diese Bibliotheken im Gegensatz zu meiner ursprünglichen Frage das Standard-Crontab-Tool verwenden, das wiederum alle notwendigen Schritte zur Aktualisierung des Daemons durchführt.

Ich denke, die beste plattformunabhängige und Cron-unabhängige Möglichkeit (Dillon, Vixie, Mcron usw.), den Daemon zu aktualisieren, besteht darin, immer das zugehörige Crontab-Dienstprogramm zu verwenden.Auch bei der programmgesteuerten Bearbeitung muss das Benutzerprogramm die neue Cron-Datei an das Crontab-Dienstprogramm übergeben, das alles tut, was für diese bestimmte Plattform/Cron erforderlich ist.

@Mark, danke für die Kommentare.Ich versuche jedoch, ein einfaches Web-Frontend bereitzustellen, das der Benutzer über das WWW anpassen kann, genau wie die direkte Bearbeitung der Crontab-Datei.

Vielen Dank für Ihre Antworten!

Andere Tipps

Nein, gibt es nicht. Wenn Sie wissen, dass es VixieCron ist, aktualisieren Sie dann den Zeitstempel des Verzeichnisses. Andernfalls könnten Sie zu fälschen können, um es:. Stellen Sie die Umgebungsvariable EDITOR, bevor Sie crontab -e aufrufen (die für die crontab einen Editor bringen sollte)

Die Idee ist, den Editor zu einem gewissen Programm zu setzen, die die Änderung vornimmt. crontab -e wird für den Editor warten zu beenden und die Datei erneut gelesen und cron sagen, dass sich etwas geändert hat.

Wenn Sie eine alte Version von cron haben, obwohl, müssen Sie ihn neu starten. Aber ich bezweifle, dass Sie solche alten Versionen auf etwas finden können, Linux oder Mac OS X ausgeführt wird.

Sane moderne Linux-Distributionen haben /etc/cron.d/ Verzeichnis, in dem Sie Ihren crontab-Eintrag als separate Datei setzen. Wenn ich das richtig das neue cronfile erinnern wird innerhalb von 2 Minuten wird geschrieben

lesen

Wenn dies so wichtig, warum nicht einen anderen Hebel benutzen? Mit anderen Worten, gibt es zwei Möglichkeiten:

crontab. 1: / do / some / sehr / spezifische / Sache mit spezifischen Parametern, die ich brauche, etc zu ändern

crontab 2: / do / was / muss / to / sein / done

In # 2, ist die Aufgabe, die für zur Laufzeit zu bestimmen, was zu tun und es tun muss. Mit diesem Entwurf benötigen, um den Begriff zu verstehen, wie crontab auf etwas detaillierteren Ebene funktioniert, ist irrelevant.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top