Ich habe einen ziemlich einfachen Job, den ich jede Stunde ausführen möchte. Ich könnte es mit machen cron
, aber ich dachte, ich würde das nutzen, um etwas zu lernen launchd
, da ich gute sachen darüber höre. Ich habe die man launchd.plist
Seite als Referenz, aber ich bin auf der Suche nach etwas, das sich mehr mit dem Erstellen eines Beispieljobs befasst.
17
cron
Frage, wäre superuser.com nicht der richtige Ort? Schon seitlaunchd
ist Apples Version voncron
(und auchdaemontools
und möglicherweise andere Dinge), dachte ich, dies sei meine beste Option.Antworten:
launchd
läuft Daemons (/Library/LaunchDaemons
oder/System/Library/LaunchDaemons
) als root ausführen, unabhängig davon, ob Benutzer angemeldet sind oder nicht. Agenten starten (/Library/LaunchAgents/
oder~/Library/LaunchAgents/
) werden ausgeführt, wenn ein Benutzer als dieser Benutzer angemeldet ist. Sie können setuid nicht verwenden, um den Benutzer zu ändern, der das Skript in Daemons ausführt. Das/System
Das Verzeichnis ist für Mac OS X-Aufgaben reserviertlaunchd
plists entweder in die/Library
oder der~/Library
Ordner, wie es Sinn macht.Der erste Schritt ist also festzustellen, ob Sie einen Agenten oder einen Daemon erstellen.
Der zweite Schritt besteht darin, Ihre
.plist
Datei. Sie können GUI-basierte Programme wie verwenden Lingon um dabei zu helfen oder verwenden Sie einfach Ihren bevorzugten Texteditor:Eine Probe
.plist
zum stündlichen Ausführen eines Skripts (StartInterval
oderStartIntervalCalendar
sind die Schlüssel, die wir wollen -StartInterval
damit ein Gegenstand jeden passiertx
Sekunden,StartIntervalCalendar
für eine bestimmte Zeit und / oder ein bestimmtes Datum. Sehen 126907 bei SuperUser für ein Beispiel, das ich mit StartCalendarInterval gemacht habe):Modifiziere den
.plist
Zeigen Sie bei Bedarf auf Ihr Skript und ggf. auf Argumente (Argumente befinden sich in separaten Zeilen), und speichern Sie die Datei mit demselben Namen wie der Label-Wert, jedoch mit.plist
Am Ende. (zum Beispiel,local.my-mac.flickrstats
würde gespeichert werden alslocal.my-mac.flickrstats.plist
). Wenn Sie das noch nicht getan haben, verschieben Sie es.plist
Datei an/Library/LaunchDaemons
bei der Erstellung eines Daemons (läuft die ganze Zeit) oder zu~/Library/LaunchAgents
(nur du bist eingeloggt) oder/Library/LaunchAgents
(Jeder Benutzer ist angemeldet).Zum Starten des Jobs, den Sie ausführen möchten
launchctl
nach Bedarf, um die Datei zu laden. Für Artikel in/Library
, Sie sollten sudo verwenden: zum Beispielsudo launchctl load -w /PATH/TO/PLIST
Beachten Sie auch die folgenden Fragen zum Super User: Starten Sie den Befehl als root , Laden Sie einen systemweiten Daemon , und Wie bekomme ich ein Skript, das jeden Tag ausgeführt wird?
quelle
Ich weiß, es ist kein gut Tutorial, aber Sie könnten einen Blick auf die Programmierhandbuch für Daemons und Services von Apple, das einen Abschnitt zum Planen von zeitgesteuerten Jobs enthält.
Ich weiß, es ist kein vollständiges Tutorial, aber damit können Sie die Grundlagen von verstehen
launchd
.Es enthält auch ein Beispiel für a
crond
Aufgabe:quelle
Das hat mir sehr geholfen: http://launchd.info
Es behandelt die Konfiguration, Verwaltung und Fehlerbehebung über Terminal oder die Start-GUI Start Steuerung . Beispiele werden ebenfalls bereitgestellt.
quelle
Ich weiß, dass Sie nach einem Tutorial gesucht haben, aber bei der Gelegenheit kommt jemand hierher, um nach einem Werkzeug zu suchen, mit dem er Launchd-Einträge erstellen / bearbeiten kann. Ich habe das schon früher verwendet: Lingon (Quellschmiede)
Es wird nicht mehr aktiv weiterentwickelt, aber was da ist, funktioniert (und beinhaltet natürlich auch die Quelle usw.). Ich habe es auf Snow Leopard verwendet, um Sicherungen in der Amazon-Cloud usw. zu planen.
quelle