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 oddanie launchd
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
lub StartIntervalCalendar
są to klucze, których potrzebujemy - StartInterval
aby element pojawiał się co x
sekundę, StartIntervalCalendar
dla określonej godziny i / lub daty. Zobacz 126907 w SuperUser dla przykładu, który wykonałem za pomocą StartCalendarInterval):
<?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>OnDemand</key>
<true/>
<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>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
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ład local.my-mac.flickrstats
zostanie zapisany jako local.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