launchdesegue Daemon ( /Library/LaunchDaemonso /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 /Systemdirectory è riservata alle attività di Mac OS X, quindi ti consiglio di inserire le tue launchdcartoline nella cartella /Libraryo nella ~/Librarycartella come ha senso.
Quindi il primo passo è determinare se stai creando un agente o un demone.
Il secondo passo è creare il tuo .plistfile. Puoi usare programmi basati su GUI come Lingon per aiutarti o semplicemente usare il tuo editor di testo preferito:
Un esempio .plistper l'esecuzione di uno script ogni ora ( StartIntervalo StartIntervalCalendarsono le chiavi che vogliamo - StartIntervalaffinché un elemento accada ogni xsecondo, StartIntervalCalendarper 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 .plistnecessario 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 .plistalla fine. (ad esempio, local.my-mac.flickrstatsverrebbe salvato come local.my-mac.flickrstats.plist). Se non l'hai già fatto, sposta quel .plistfile su /Library/LaunchDaemonsquando 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, launchctlse 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