Ich bin verwirrt über die Unterschiede zwischen den drei (mir bekannten) Tools zum Planen der Ausführung von Code unter OS X / Darwin:
Ich verstehe, dass cron
das weitgehend veraltet ist, aber es wird immer noch von einigen Dienstprogrammen verwendet (wie Super Super!, Aus irgendeinem Grund), und das pmset
hat die Fähigkeit, den Computer zu wecken, um bestimmte Jobs auszuführen. Aber mir ist nicht klar, was die Auswahl des einen gegenüber dem anderen im Allgemeinen leiten würde.
Wie unterscheiden sich diese drei Methoden der Betriebssystemplanung (insbesondere bei Mavericks, wenn die Dinge dort anders sind), insbesondere in den Aufgaben, für die sie geeignet sind, und wie sie sich im Schlaf oder Winterschlaf verhalten?
Verwenden Sie launchd
anstelle von cron
, at
, oder anderen älteren UNIX-Tools für Mac OS X.
pmset ist ein integriertes Befehlszeilentool zum Abrufen und Einstellen von energiebezogenen Werten unter Mac OS X. Eine der Fähigkeiten von pmset ist das Hinzufügen und Entfernen von Einträgen aus der IOPMQueue; Die IOPMQueue ist die Warteschlange auf IOKit-Ebene, mit der Ihr Mac zu einer bestimmten Zeit eingeschaltet und aufgeweckt werden kann. IOPMQueue unterstützt auch die Planung von Herunterfahren und Neustarten.
Beliebiger Code kann nicht mit pmset oder über die IOPMQueue geplant werden.
cron ist ein fester Bestandteil der Welt der Aufgabenplanung. Unter Mac OS X wird die Verwendung von cron jedoch nicht empfohlen. Verwenden Sie launchd
.
Cron wird implementiert, indem jede Minute nach fälligen Aufgaben gesucht wird. Dies ermöglicht ein leistungsstarkes und ausdrucksstarkes Scheduling-Format, jedoch auf Kosten der Notwendigkeit, den Prozessor jede Minute aufzuwecken.
cron weiß nicht, ob Ihr Mac schläft. Wenn eine Aufgabe fällig ist, während Ihr Mac im Energiesparmodus oder ausgeschaltet ist, wird die Aufgabe nicht ausgeführt. Wenn Ihr Mac wieder eingeschaltet wird, wird die Aufgabe nicht ausgeführt, da die Minute, in der sie ausgeführt werden sollte, verstrichen ist.
Es gibt andere Tools, die auf Cron aufbauen und verpasste Aufgaben nach dem Aufwachen ausführen können. Keine sind standardmäßig in Mac OS X enthalten.
launchd (Launch-Daemon) ist Apples Systemstarter, Planungstool und Prozesswächter. launchd wurde zuerst für die Bedürfnisse des Betriebssystems und dann für die Benutzer geschrieben. Es ist ein leistungsstarker und leistungsfähiger Prozess, mit dem Sie fast jeden anderen Prozess auf Ihrem Mac verwalten oder starten können.
launchd ist eine Verbesserung von cron für die Planung, da es keine Abfragen zum Ausführen von Aufgaben benötigt. Stattdessen kann launchd inaktiv bleiben, bis eine Aufgabe ausgeführt werden muss. In einer Ära des energiebewussten und mobilen Computing ist dies wichtig.
launchd wird einen schlafenden Mac nicht aufwecken, um Aufgaben auszuführen.
launchd-Jobtickets sind Eigenschaftslistendateien (plist). Diese Dateien können mit einem Texteditor oder mit einer Reihe von Anwendungen von Drittanbietern bearbeitet werden.
launchd wird für die meisten Planungssituationen empfohlen und ist dafür geeignet.
Unter Mac OS X sind eine Reihe von Planungstools von Drittanbietern verfügbar. Sie bieten häufig eine grafische Benutzeroberfläche oder bieten mehr Funktionen als in den Standard-Befehlszeilentools von Mac OS X enthalten sind. Das Tool, mit dem ich verbunden bin, ist Power Manager .
pmset
ist Low-Level-Zeug und steuert die Ausführung von Code nicht wirklich speziell, zumindest nicht auf direkte oder beabsichtigte Weise. Es steuert Dinge wie das Ein- oder Ausschalten Ihres Mac zu bestimmten Zeiten, ähnlich wie Sie es in den Systemeinstellungen » Energiesparmodus tun können. Im Allgemeinen sollten Sie nie pmset
etwas direkt verwenden müssen.
cron
ist immer noch da, weil … nun, weil Apple es noch nicht abgeschafft hat, obwohl es vor Ewigkeiten veraltet war. Ich vermute, es liegt daran, dass ein paar alte Un*x-Leute noch bei Apple arbeiten, die es nicht verschwinden sehen wollen. Aber wirklich, es macht keinen wirklichen Sinn, das zu verwenden, wenn Sie verwenden können launchd
. IIRC- cron
Jobs werden nicht ausgeführt, wenn der Computer im Ruhezustand war, als er ausgeführt werden sollte.
launchd
ist Apples Ersatz cron
, der der Planung von Ereignissen auf einem Mac viel Flexibilität verleiht. Auf diese Weise sollten Sie Ereignisse auf einem Mac planen. Der beste Weg, die Verwendung zu erlernen, launchd
ist LaunchControl , eine 10-US-Dollar-App ohne DRM, ohne Lizenzcodes und ohne Einschränkungen. (Die Entwickler verlassen sich auf die Ehrlichkeit ihrer Benutzer, die Registrierungsgebühr zu zahlen, wenn sie die App verwenden.) Sie erhalten nicht nur Drag-and-Drop-Funktionalität zum Einbringen verschiedener Elemente von launchd
Plists, jedes einzelne ist dokumentiert, damit Sie es genau sehen können Was es macht. Sehr zu empfehlen.
pmset
funktioniert eine App wie Power Manager ? Es erstellt eindeutig pmset
Einträge (und verwendet kein cron
oder launchd
) und tut auch mehr, als nur die Maschine aufzuwecken (es führt willkürlichen Code aus).
Orom
cron
werden, insbesondere wenn es den Prozessor jede Minute aufweckt?!Graham Mill
cron
für Super Duper! ist nicht schlecht, sondern wahrscheinlich eine Designeinschränkung in ihren Plänen oder eine Einschränkung, auflaunchd
die sie während der Entwicklung gestoßen sind. Es gibt wenig Anreiz für Shirt Pocket, zu migrieren,launchd
solangecron
es für seine Kunden weiterhin gut funktioniert.Orom
Graham Mill
cron_tick
Funktion und der Aufrufschleife, um dieses Verhalten zu bestätigen.Orom
cron
jede Sekunde auf, selbst wenn keine geplantencron
Aufgaben vorhanden sind – dh das Aufwachen würde fortgesetzt, selbst wenn es keine gäbe?Graham Mill
cron
wacht jede Minute auf, um zu prüfen, ob irgendwelche Aufgaben fällig sind.