Ich habe gerade herausgefunden, dass cron
das in Mac OS X veraltet ist. Warum ist das so und wird es irgendwann vollständig aus zukünftigen Versionen entfernt?
Mit der Veröffentlichung von Mac OS 10.4 launchd
wurde entschieden, cron
Mac OS abzulösen. Hier ist eine zwischengespeicherte Version der Startseite von Apple Developer Connection aus dem Jahr 2005. Hier wird erklärt, warum diese Seite cron
veraltet ist und welche Vorteile sich launchd
aus der Sicht von Apple ergeben.
Die Zusammenfassung: launchd
wurde erstellt, um nicht nur zu ersetzen, cron
sondern auch init
, xinetd
um die Leistung und die Kontrolle über die Konfiguration und die eigentlichen Aufgaben zu verbessern.
Der
launchd
Daemon bietet eine einzige, standardisierte Schnittstelle zu allen Programmen, die vom System automatisch gestartet werden. Darüber hinaus können in den Konfigurationsdateien, die festlegen, wann ein bestimmtes Programm ausgeführt werden soll, Ressourcenbegrenzungen und Umgebungsvariablen angegeben werden, was die Einrichtung und Sicherheit vieler Programme vereinfacht. Das gleiche Konfigurationsdateiformat wird verwendet, unabhängig davon, ob ein Job einmal beim Systemstart oder bei der Benutzeranmeldung, bei Bedarf über das Netzwerk oder in Intervallen gestartet wird.
Der Wikipedia-Artikel auf launchd bietet eine sehr gute Zusammenfassung, ausführliche Diskussionen sowie einige großartige Videos und externe Links, um einen tieferen Einblick in diese Entscheidung von Apple zu erhalten.
Auf dem Punkt gebracht, launchd
ersetzt 7 Hauptaufgaben und eine Schiffsladung von Skripten ( inetd , init und rc und zugehörigen Shell - Skript Strukturen, crond , ATD , watchdogd , SystemStarter ) mit einem viel leistungsfähigem Open Source - Tool.
Warum:
Wann: 29. April 2005 (Als OS X Tiger zum Verkauf freigegeben wurde)
Nichts hindert uns alle daran, launchd zu verwenden, um cron jetzt auf Tiger, Leopard oder Snow Leopard zu starten.
Sollte Apple die Auslieferung zukünftig /usr/sbin/cron
einstellen, wird es sicherlich wie Wget und andere ausgereifte Open-Source-Tools enden , die kompiliert werden und als separates Befehlszeilentool hinzugefügt werden müssen.
Ich weiß nicht einmal, ob Cron veraltet ist. man crontab
scheint darauf hinzudeuten, dass dies nicht der Fall ist:
(Anmerkung von Darwin: Obwohl cron (8) und crontab (5) offiziell von Darwin unterstützt werden, wurde ihre Funktionalität in launchd (8) aufgenommen, was eine flexiblere Möglichkeit zur automatischen Ausführung von Befehlen bietet. Weitere Informationen finden Sie in launchctl (1) .)
Im Daemons and Services Programming Guide heißt es, dass es jedoch veraltet ist:
Hinweis: Obwohl es weiterhin unterstützt wird, ist cron keine empfohlene Lösung. Es wurde zugunsten von launchd veraltet.
crontab wird auch von POSIX benötigt und OS X soll SUS-kompatibel sein.
In jedem Fall wird cron wahrscheinlich bald nicht mehr funktionieren, und ich weiß nicht, ob es langsamer oder weniger sicher ist als launchd. Der Cron-Prozess sollte fast keine CPU-Zeit oder Speicher belegen. Einige Vorteile der Verwendung oder des Lernens von cron bestehen darin, dass es auch auf anderen Plattformen verfügbar ist und das Konfigurationsformat einfacher ist.