Mam dość prostą pracę, którą chciałbym wykonywać co godzinę. Mógłbym to zrobić za pomocą cron
, ale pomyślałem, że skorzystam z tego, aby się dowiedzieć launchd
, ponieważ słyszę o tym dobre rzeczy. Mam man launchd.plist
stronę jako odniesienie, ale szukam czegoś bardziej opartego na budowaniu przykładowej pracy.
19
cron
pytanie, czy superuser.com nie byłby właściwym miejscem? Ponieważlaunchd
jest to wersja Applecron
(a takżedaemontools
i ewentualnie innych rzeczy), pomyślałem, że to moja najlepsza opcja.Odpowiedzi:
launchd
uruchamia demony (/Library/LaunchDaemons
lub/System/Library/LaunchDaemons
) jako root i uruchamia je bez względu na to, czy użytkownicy są zalogowani, czy nie. Agenty uruchamiania (/Library/LaunchAgents/
lub~/Library/LaunchAgents/
) są uruchamiane, gdy użytkownik jest zalogowany jako ten użytkownik. Nie można użyć setuid do zmiany użytkownika uruchamiającego skrypt na demonach./System
Katalog jest zarezerwowany dla systemu Mac OS X zadań więc polecam oddanielaunchd
listy właściwości albo do/Library
lub~/Library
folderu jak ma to sens.Więc pierwszym krokiem jest ustalenie, czy tworzysz agenta, czy demona.
Drugim krokiem jest utworzenie
.plist
pliku. Możesz użyć programów opartych na GUI, takich jak Lingon, aby w tym pomóc lub po prostu użyć swojego ulubionego edytora tekstu:Przykład
.plist
uruchomienia skryptu co godzinę (StartInterval
lubStartIntervalCalendar
są to klucze, których potrzebujemy -StartInterval
aby element pojawiał się cox
sekundę,StartIntervalCalendar
dla określonej godziny i / lub daty. Zobacz 126907 w SuperUser dla przykładu, który wykonałem za pomocą StartCalendarInterval):Zmodyfikuj
.plist
odpowiednio, aby wskazać skrypt i wszelkie argumenty, jeśli to konieczne (argumenty znajdują się w osobnych wierszach) i zapisz plik o tej samej nazwie co wartość Label, ale z.plist
końcem. (na przykładlocal.my-mac.flickrstats
zostanie zapisany jakolocal.my-mac.flickrstats.plist
). Jeśli jeszcze tego nie zrobiłeś, przenieś ten.plist
plik do/Library/LaunchDaemons
podczas tworzenia demona (działa cały czas) lub do~/Library/LaunchAgents
(tylko jesteś zalogowany) lub/Library/LaunchAgents
(dowolny użytkownik jest zalogowany).Aby rozpocząć zadanie, które chcesz uruchomić
launchctl
w razie potrzeby, załaduj plik. W przypadku przedmiotów w/Library
należy użyć sudo: na przykładsudo launchctl load -w /PATH/TO/PLIST
W celach informacyjnych zapoznaj się również z następującymi pytaniami na temat superużytkownika : Uruchom komendę jako root , Załaduj ogólnosystemowego demona i Jak mogę uzyskać skrypt do uruchamiania codziennie
źródło
Wiem, że to nie jest dobry samouczek, ale możesz zajrzeć do Przewodnika programowania demonów i usług firmy Apple, który zawiera sekcję Planowanie zadań czasowych.
Wiem, że nie jest to pełny samouczek, ale dzięki niemu możesz zrozumieć podstawy
launchd
.Podaje również przykład
crond
zadania:źródło
To bardzo mi pomogło: http://launchd.info
Obejmuje konfigurację, administrację i rozwiązywanie problemów za pomocą terminalu lub uruchomionego GUI LaunchControl . Podano również przykłady.
źródło
Wiem, że szukałeś samouczka, ale przypadkowo ktoś tu przychodzi w ramach szukania narzędzia, które pomoże mu tworzyć / edytować uruchomione wpisy, korzystałem z tego wcześniej: Lingon (sourceforge)
Nie jest już aktywnie rozwijany, ale to, co tam działa, działa (i oczywiście obejmuje źródło itp.). Użyłem go w systemie Snow Leopard do planowania kopii zapasowych w chmurze Amazon itp.
źródło