launchd
esegue Daemon ( /Library/LaunchDaemons
o /System/Library/LaunchDaemons
) come root e li eseguirà indipendentemente dal fatto che gli utenti abbiano effettuato l'accesso o meno. Gli agenti di avvio ( /Library/LaunchAgents/
o ~/Library/LaunchAgents/
) vengono eseguiti quando un utente ha effettuato l'accesso come tale utente. Non è possibile utilizzare setuid per modificare l'utente che esegue lo script sui daemon. La /System
directory è riservata alle attività di Mac OS X, quindi ti consiglio di inserire le tue launchd
cartoline nella cartella /Library
o nella ~/Library
cartella come ha senso.
Quindi il primo passo è determinare se stai creando un agente o un demone.
Il secondo passo è creare il tuo .plist
file. Puoi usare programmi basati su GUI come Lingon per aiutarti o semplicemente usare il tuo editor di testo preferito:
Un esempio .plist
per l'esecuzione di uno script ogni ora ( StartInterval
o StartIntervalCalendar
sono le chiavi che vogliamo - StartInterval
affinché un elemento accada ogni x
secondo, StartIntervalCalendar
per un orario e / o una data specifici. Vedere 126907 su SuperUser per un esempio che ho realizzato con 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>
Modificate il .plist
necessario per puntare al vostro script e qualsiasi argomento se necessario (gli argomenti sono su righe separate) e salvate il file con lo stesso nome del valore Label ma con .plist
alla fine. (ad esempio, local.my-mac.flickrstats
verrebbe salvato come local.my-mac.flickrstats.plist
). Se non l'hai già fatto, sposta quel .plist
file su /Library/LaunchDaemons
quando crei un Demone (funziona sempre) o su ~/Library/LaunchAgents
(solo tu sei loggato) o /Library/LaunchAgents
(qualsiasi utente ha effettuato l'accesso).
Per avviare il lavoro che si desidera eseguire, launchctl
se necessario, per caricare il file. Per gli elementi in /Library
, dovresti usare sudo: ad esempio,sudo launchctl load -w /PATH/TO/PLIST
Per riferimento, controlla anche le seguenti domande su Super User: comando Launchd come root , carica un demone a livello di sistema e come posso ottenere uno script da eseguire ogni giorno