Cron? Gestartet? iCal ??
Wenn das so ist, wie?
Cron? Gestartet? iCal ??
Wenn das so ist, wie?
Antworten:
Als Referenz würden alle 3 Optionen funktionieren. Die iCal-Option hat jedoch mehr Einschränkungen als die anderen.
(Es gibt GUIs zum Bearbeiten von cron und launchd, wie in anderen Antworten erwähnt)
Cron ist das direkteste und bekannteste und es gibt viele Tutorials. Mit den Coles Notes fügen Sie Ihrer Crontab die letzte Zeile von unten hinzu (entweder durch Bearbeiten /etc/crontab
oder Verwenden crontab
der Befehlszeile):
MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"
Wurde in Mac OS X cron
tatsächlich durch ersetzt launchd
, launchd
ist jedoch abwärtskompatibel mit der cron
Bedeutung, die Sie weiterhin verwenden können, erledigt cron
jedoch die launchd
gesamte Arbeit.
Wenn Sie verwenden möchten, sollten launchd
Sie auch andere Fragen zu Super User prüfen: (z. B. Wie führe ich einen launchd-Befehl als root aus? ) Wo möchten Sie Ihre Konfigurationsdatei (die plist-Datei) speichern ? Wie es läuft, hängt davon ab, in welchem Verzeichnis es gespeichert ist und wie es geladen wird (z. B. ob Sie sudo verwendet haben oder nicht) - ähnlich wie bei cron.
Es folgt eine tägliche Beispielausführung von launchd plist (stellen Sie sicher, dass die Datei und das Label identisch sind - abzüglich der Plist für das Label). Dieses Skript wird täglich um 3 Minuten nach Mitternacht ausgeführt:
<?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>local.IDENTIFIER_HERE.SOMETHING</string>
<key>KeepAlive</key>
<false/>
<key>RunAtLoad</key>
<false/>
<key>UserName</key>
<string>USERNAME HERE</string>
<key>Program</key>
<string>/PATH/TO/SCRIPT</string>
<key>ProgramArguments</key>
<array>
<string>Argument_1</string>
<string>Argument_2</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>00</integer>
<key>Minute</key>
<integer>03</integer>
</dict>
</dict>
</plist>
Es ist auch erwähnenswert, dass gestartete Aufgaben, wenn sie geplant wurden, wenn der Computer schläft oder ausgeschaltet ist, ausgeführt werden, wenn der Computer wieder verfügbar ist (Einschalten oder Aufwecken) - allerdings nur einmal, egal wie viele Tage er hat gewesen. Bearbeiten: Ich war gerade bei einem Apple-Dokument, das sagte, dass wenn der Computer ausgeschaltet ist, Sie während dieser Zeit alle Startereignisse verlieren werden (Ihr Skript wird beim Start nicht gestartet). (Schlaf startet das Skript beim Aufwachen.)
Eine andere Möglichkeit ist die Verwendung von " at " (siehe Handbuchseite mit "man at"). Das Skript kann sich selbst neu terminieren mit zB:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(Verwenden Sie "+ 10 Minuten" anstelle von "Morgen", um es alle 10 Minuten auszuführen. Um die Planung zu beenden, führen Sie einfach "at -l" aus, um die geplanten Job-IDs aufzulisten, und dann "at -r id ", um den Job zu entfernen.)
Möglicherweise müssen Sie den entsprechenden Dämon (atrun) zuerst mit (siehe https://superuser.com/a/43680 ) starten :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Vorteile: schnelle Fehlerbehebung, kein Sudo / Root-Zugriff erforderlich, komplizierte Zeitplanmuster einfach auszuführen Nachteil: keine Standard-Zeitplanmethode für OS X (wird gestartet)
launchd
ist der Weg, um unter OS X zu gehen.
crontab -e
, werden Sie in einen terminalbasierten Texteditor für eine Datei versetzt, die beim Speichern zu Ihrer persönlichen Crontab wird.
LaunchControl ist eine weitere GUI für launchd / launchctl. Während die von anderen erwähnten Alternativen durchaus in der Lage sind, ein Skript täglich zu starten, können Sie mit LaunchControl komplexe Zeitpläne konfigurieren (z. B. "einmal an jedem Wochentag, am Wochenende jede Stunde zwischen 14:00 und 20:00 Uhr"). Es ist auch (AFAIK) das einzige Tool, das den Job tatsächlich validiert. Wenn ein Job nicht wie erwartet funktioniert, zeigt er Ihnen, warum.
Es ist kostenlos zu versuchen, solange Sie wollen.
CronniX ist ein nettes GUI-Frontend zum Planen von Cron-Jobs auf dem Mac ... Ziemlich anständig, wenn Sie nicht in die Cron-Dokumentation eintauchen möchten.
cron
wenn Sie dafür googeln.Es hängt davon ab, was Sie möchten: iCal-Skripte werden nur ausgeführt, wenn Sie angemeldet sind, führen cron
das Skript aus, ohne angemeldet zu sein. Ich weiß nicht, ob iCal ein Skript ausführt, wenn der Mac zu dem Zeitpunkt ausgeschaltet war, als das Skript ausgeführt werden sollte ausgeführt worden. cron
macht das.
Ein Update: Sie können einige Apps im Mac OS X App Store auschecken, die dies tun:
Lingon scheint ebenfalls verfügbar zu sein, je nachdem, welches Betriebssystem Sie verwenden.
Hier ist ein einfaches, kostenloses Dienstprogramm zum Generieren von Plist-XML:
http://www.gieson.com/Library/projects/utilities/launcha/
Mit diesem Dienstprogramm brauchen Sie kein Programm zu installieren, sondern speichern die Ergebnisse in Ihrem Library / LaunchAgents-Ordner.
RunAtStart
es auf false gesetzt ist (es sei denn, Sie möchten, dass es true ist). Ich verbrachte eine Stunde damit, herauszufinden, warum mein Finder einfrieren und das Laden des Desktops beim Booten verhindern würde. Das Deaktivieren RunAtStart
beeinträchtigt nicht den festgelegten Zeitplan.
Ich benutze dafür immer Lingon , aber es sieht so aus, als wäre es aus der Entwicklung. Sie könnten es mit Crontooie versuchen , aber ich habe es nie persönlich benutzt. Oder bearbeiten Sie einfach die crontab-Datei im Terminal.
Wenn Sie das KOSTENLOSE ausprobieren möchten, würde ich Task Till Dawn empfehlen
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
... Alle fünf Minuten werden die Befehlszeilen ausgeführt, die Sie für ".... cut ...." eingeben.
30 Jahre Fortschritt, und 'cron' ist immer noch mein Lieblingsplaner.
-C
Wenn ein Kalenderereignis Ihren Anforderungen entspricht, können Sie mit der integrierten Automator-Anwendung auch Kalenderalarme erstellen, die durch Kalenderereignisse ausgelöst werden. Sie können einige der integrierten UI-basierten Aktionen verwenden, um das zu tun, was Sie möchten, oder Sie können auch eine Anwendung oder ein benutzerdefiniertes AppleScript-, JavaScript- oder Shell-Skript ausführen.