Cron? Uruchomiony? iCal ??
Jeśli tak to jak?
Cron? Uruchomiony? iCal ??
Jeśli tak to jak?
Odpowiedzi:
Dla porównania wszystkie 3 opcje będą działać. Opcja iCal ma jednak więcej ograniczeń niż inne.
(Istnieją GUI do edycji crona i uruchomienia, jak wspomniano w innych odpowiedziach)
Cron jest najbardziej prosty i znany, a dostępnych jest wiele samouczków. Coles Notes polega na dodaniu ostatniego wiersza od dołu do twojej tabeli (poprzez edycję /etc/crontab
lub użycie crontab
w wierszu poleceń):
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"
W Mac OS X cron
został faktycznie zastąpiony przez, launchd
ale launchd
jest wstecznie kompatybilny, cron
co oznacza, że nadal możesz go używać, cron
ale w rzeczywistości launchd
wykonuje całą pracę.
Jeśli chcesz użyć launchd
, sprawdź także inne pytania tutaj na Super User: (np. Jak uruchomić uruchomioną komendę jako root? ), Gdzie chcesz zapisać plik konfiguracyjny (plik plist) jak działa, zależy od tego, w którym katalogu jest przechowywany i jak jest ładowany (np. czy użyłeś sudo czy nie) - podobnie jak cron.
Następujący przykładowy codzienny uruchamiany plist (upewnij się, że plik i etykieta są takie same - pomniejszone o plist dla etykiety) - ten skrypt jest uruchamiany codziennie o 3 minuty po północy:
<?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>
Warto również zauważyć, że uruchomione zadania, jeśli zostały zaplanowane na czas, gdy komputer śpi lub jest wyłączony, będą działać, gdy komputer stanie się ponownie dostępny (włączając go lub budząc) - choć tylko raz, bez względu na to, ile dni może mieć być. Edycja: Właśnie byłem przy dokumencie Apple, który powiedział, że jeśli maszyna jest wyłączona, wtedy stracisz wszystkie zdarzenia uruchamiania w tym czasie (twój skrypt nie uruchomi się przy uruchomieniu), (sen uruchomi skrypt po przebudzeniu)
Inną opcją jest użycie „ at ” (sprawdź stronę podręcznika z „man at”). Skrypt może się ponownie zaplanować za pomocą np .:
echo "sh $0 $@" | at `date +%H:%M` tomorrow
(użyj „+ 10 minut” zamiast „jutro”, aby uruchomić go co 10 minut; aby zatrzymać planowanie, po prostu wykonaj „at -l”, aby wyświetlić listę zaplanowanych identyfikatorów zadań, a następnie „at -r id ”, aby usunąć zadanie)
Może być konieczne uruchomienie odpowiedniego demona (atrun) najpierw za pomocą (patrz https://superuser.com/a/43680 ):
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Zalety: szybka poprawka, brak dostępu do sudo / root, łatwe do wykonania skomplikowane wzorce harmonogramu Wada: niestandardowa metoda planowania dla OS X (która jest uruchamiana)
launchd
jest drogą do przejścia pod OS X.
crontab -e
, przeniesie Cię on do edytora tekstowego opartego na terminalu w pliku, który stanie się Twoim osobistym crontabem podczas jego zapisywania.
LaunchControl to kolejny GUI dla launchd / launchctl. Podczas gdy alternatywy wspomniane przez innych są w pełni zdolne do uruchamiania skryptu na codzień, z LaunchControl możesz konfigurować złożone harmonogramy (np. „Raz w każdy dzień roboczy, w weekendy co godzinę między 14:00 a 20:00”). Jest to także (AFAIK) jedyne narzędzie, które faktycznie sprawdza poprawność zadania. Jeśli praca nie działa zgodnie z oczekiwaniami, pokaże ci dlaczego.
Wypróbuj za darmo tak długo, jak chcesz.
cron
jeśli google na to.Zależy to od tego, czego chcesz: skrypty iCal będą wykonywane tylko wtedy, gdy jesteś zalogowany, cron
wykonuje skrypt bez zalogowania. Nie wiem, czy iCal wykonuje skrypt, jeśli komputer Mac został wyłączony w momencie, gdy skrypt powinien był mieć został stracony. cron
robi to.
Aktualizacja: możesz sprawdzić niektóre aplikacje w Mac OS X App Store, które to robią:
Lingon również wydaje się być dostępny, w zależności od używanego systemu operacyjnego.
Oto proste, bezpłatne narzędzie do generowania plist XML:
http://www.gieson.com/Library/projects/utilities/launcha/
Przy takim użyciu nie ma potrzeby instalowania programu, wystarczy zapisać wyniki w folderze Library / LaunchAgents.
RunAtStart
jest ono ustawione na false (chyba że chcesz, aby było prawdziwe). Spędziłem godzinę zastanawiając się, dlaczego mój Finder zawiesił się i powstrzymał ładowanie pulpitu podczas uruchamiania. Wyłączenie RunAtStart
nie zakłóca ustalonego harmonogramu.
Zawsze używam do tego Lingona , ale wygląda na to, że nie jest już w fazie rozwoju. Możesz spróbować Crontooie , ale nigdy nie użyłem go osobiście. Lub po prostu edytuj plik crontab w terminalu.
Jeśli chcesz wypróbować DARMOWĄ, proponuję Zadanie do świtu
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $
... jakiekolwiek wiersze poleceń, które wprowadzisz dla „.... cut ....” będą uruchamiane co pięć minut.
30 lat postępu, a „cron” nadal jest moim ulubionym programistą.
-DO
Jeśli wydarzenie kalendarza spełnia Twoje potrzeby, wbudowana aplikacja Automator umożliwia także tworzenie alarmów kalendarza, które są uruchamiane przez zdarzenia kalendarza. Możesz użyć niektórych wbudowanych akcji opartych na interfejsie użytkownika, aby zrobić to, co chcesz, lub możesz też uruchomić aplikację lub niestandardowy skrypt AppleScript, JavaScript lub skrypt powłoki.