Frage

Wie kann ich beispielsweise alle 30 Minuten ein Skript ausführen lassen?Ich gehe davon aus, dass es für verschiedene Betriebssysteme unterschiedliche Möglichkeiten gibt.Ich verwende OS X.

War es hilfreich?

Lösung

Benutz einfach gestartet.Es ist ein sehr leistungsstarkes Launcher-System und mittlerweile das Standard-Launcher-System für Mac OS X (die aktuelle OS X-Version würde ohne es nicht einmal booten).Für diejenigen, die es nicht kennen launchd (oder mit OS X im Allgemeinen) ist es wie eine Kreuzung dazwischen init, cron, at, SysVinit (init.d), inetd, upstart Und systemd.Wir übernehmen die Konzepte all dieser Projekte und bieten gleichzeitig Dinge an, die Sie woanders möglicherweise nicht finden.

Jeder Dienst/jede Aufgabe ist eine Datei.Der Speicherort der Datei hängt von den Fragen ab:"Wann soll dieser Dienst ausgeführt werden?" und "Welche Berechtigungen benötigt der Dienst?"

Systemaufgaben gehen zu

/Library/LaunchDaemons/

ob sie ausgeführt werden sollen, unabhängig davon, ob ein Benutzer am System angemeldet ist oder nicht.Sie werden mit „root“-Rechten gestartet.

Wenn sie nur laufen sollen, wenn beliebig Wenn der Benutzer angemeldet ist, geht er zu

/Library/LaunchAgents/

und wird mit den Berechtigungen des gerade angemeldeten Benutzers ausgeführt.

Wenn sie nur laufen sollen, wenn Du Sind Sie eingeloggt, gehen sie zu

~/Library/LaunchAgents/

wobei ~ Ihr HOME-Verzeichnis ist.Diese Aufgaben werden mit Ihren Rechten ausgeführt, als ob Sie sie selbst über die Befehlszeile oder durch Doppelklicken auf eine Datei im Finder gestartet hätten.

Beachten Sie, dass es auch existiert /System/Library/LaunchDaemons Und /System/Library/LaunchAgents, aber wie immer alles darunter /System wird von OS X verwaltet.Sie dürfen dort keine Dateien ablegen und dort keine Dateien ändern, es sei denn, Sie wissen wirklich, was Sie tun.Das Herumwühlen im Systemordner kann Ihr System unbrauchbar machen (es in einen Zustand versetzen, in dem es sich sogar weigert, wieder hochzufahren).Dies sind die Verzeichnisse, in denen Apple die Dateien ablegt launchd Aufgaben, die Ihr System während des Startvorgangs zum Laufen bringen, bei Bedarf automatisch Dienste starten, Systemwartungsaufgaben ausführen usw.

Jeden launchd task gibt es eine Datei im Plist-Format.Es sollte eine umgekehrte Domänennamennotation haben.Z.B.Sie können Ihrer Aufgabe einen Namen geben

com.example.my-fancy-task.plist

Diese Liste kann verschiedene Optionen und Einstellungen haben.Eines pro Hand zu schreiben ist nicht optimal. Vielleicht möchten Sie sich das kostenlose Tool holen Lingon um Ihre Aufgaben zu erstellen.Früher war dieses Tool kostenlos, jetzt kostet es im App Store 5 US-Dollar und in der Nicht-App-Store-Version 10 US-Dollar (die Nicht-App-Store-Version ist viel leistungsfähiger und wenn Sie bereits vorhaben, dafür zu zahlen, im Ernst, holen Sie sich die Nicht-App-Store-Version Ausführung).Wenn jemand ein vergleichbares Tool kennt, das Freeware oder Open Source ist, schreibt es mir in die Kommentare und ich werde es eher empfehlen (ich möchte hier keine Werbung für kommerzielle Software machen).

Nur als Beispiel könnte es so aussehen

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.my-fancy-task</string>
    <key>OnDemand</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/bin/my-script.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>
</dict>
</plist>

Dieser Agent führt alle 1800 Sekunden (alle 30 Minuten) das Shell-Skript /usr/local/bin/my-script.sh aus.Sie können die Aufgabe auch an bestimmten Daten/Uhrzeiten ausführen lassen (im Grunde kann launchd alles tun, was cron kann) oder Sie können sogar „OnDemand“ deaktivieren, wodurch launchd den Prozess dauerhaft laufen lässt (wenn er beendet wird oder abstürzt, startet launchd ihn sofort neu). .Sie können sogar begrenzen, wie viele Ressourcen ein Prozess verwenden darf (wie bereits erwähnt, zeigt Lingon alle diese Einstellungen in einer schönen Benutzeroberfläche an).

Aktualisieren: Wenngleich OnDemand wird immer noch unterstützt, es ist veraltet.Die neue Einstellung wird benannt KeepAlive, was viel sinnvoller ist.Es kann einen booleschen Wert haben, in diesem Fall ist es das genaue Gegenteil von OnDemand (einstellen auf false verhält sich so, als ob OnDemand Ist true und umgekehrt).Die tolle neue Funktion ist, dass es anstelle eines booleschen Werts auch einen Wörterbuchwert haben kann.Wenn es einen Wörterbuchwert hat, stehen Ihnen einige zusätzliche Optionen zur Verfügung, mit denen Sie genauer steuern können, unter welchen Umständen die Aufgabe am Leben gehalten werden soll.Z.B.Es wird nur so lange am Leben gehalten, wie das Programm mit dem Exit-Code Null beendet wurde, nur solange eine bestimmte Datei/ein bestimmtes Verzeichnis auf der Festplatte vorhanden ist, nur wenn eine andere Aufgabe ebenfalls aktiv ist oder nur wenn das Netzwerk gerade aktiv ist.

Sie können Aufgaben auch manuell über die Befehlszeile aktivieren/deaktivieren:

launchctl <command> <parameter>

Der Befehl kann laden oder entladen sein, um eine Plist zu laden oder wieder zu entladen. In diesem Fall ist der Parameter der Pfad zur Datei.Oder der Befehl kann „start“ oder „stop“ sein, um eine solche Aufgabe einfach zu starten oder zu stoppen. In diesem Fall ist der Parameter die Bezeichnung (com.example.my-fancy-task).Es gibt auch andere Befehle und Optionen.

Weitere Informationen finden Sie in der Dokumentation von Apple plist-Format und des launchctl Befehlszeilentool (Beachten Sie, dass Sie oben die OS X-Version auswählen können, da das Format/die Optionen zwischen verschiedenen OS X-Versionen variieren.)

Andere Tipps

könnten Sie die sehr bequem plist Generator verwenden: http://launched.zerowidth.com/ (keine Notwendigkeit, etwas zu kaufen ... )

es werden Ihnen ein Shell-Einzeiler einen neuen geplanten Job mit dem bereits empfohlen launchd

registrieren

Auf MacOSX, haben Sie zumindest die folgenden Optionen:

Aus eigener Erfahrung ist cron das zuverlässigste. Als ich getestet hatte launchd eine Reihe von Fehlern und Macken. iCal Alarme nur ausgeführt, wenn Sie eingeloggt sind (aber das ist vielleicht etwas, das Sie bevorzugen sein).

Wie Mecki darauf hingewiesen, launchd wäre der Weg mit diesem zu gehen. Es gibt eine GUI-Schnittstelle für launchd genannt Lingon , dass Sie überprüfen möchten vielleicht, im Gegensatz zu der Bearbeitung der launchd Dateien von Hand:

  

Lingon ist eine grafische Benutzerschnittstelle zum Erstellen eines Bearbeitungs launchd   Konfigurationsdateien für Mac OS X Leopard 10.5.

     

[snip ...]

     

eine Konfigurationsdatei bearbeiten ist einfacher als je zuvor in dieser Version   und es verfügt über zwei verschiedene Modi. Basis-Modus, der die häufigste hat   Einstellungen leicht zugänglich in einer sehr einfachen Schnittstelle und Expertenmodus   wo können Sie alle Einstellungen hinzufügen entweder direkt im Text oder Insert   sie durch ein Menü.

MAC OS hat ein Automator Tool, wie die gleichen Taskplaner in den Fenstern. Und Automator verwenden Sie können Aufgaben auf einer täglichen Basis planen und die Aufgabe verknüpfen mit Kalender wiederholten Veranstaltung täglich Skripte auf bestimmten Zeit auszuführen. siehe Link Skripte auf täglicher Basis in Mac OS ausführen

Für Apple-Skripte, habe ich einen speziellen iCal-Kalender und die Verwendung Alarme, um sie regelmäßig zu laufen. Für Kommandozeilen-Tools, verwende ich launchd.

Zur Info: während ich so verpassen Sie es siplicity, Cron ist eine Sache der Vergangenheit auf OS X. Es Watchdog auf Panther war. Seit Tiger hat es Launchd worden. Also, wenn Sie Leopard cron ausgeführt werden, ist keine Option.

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