launchdexécute Daemons ( /Library/LaunchDaemonsou /System/Library/LaunchDaemons) en tant que root et les exécutera, que les utilisateurs soient connectés ou non. Les agents de lancement ( /Library/LaunchAgents/ou ~/Library/LaunchAgents/) sont exécutés lorsqu'un utilisateur est connecté en tant qu'utilisateur. Vous ne pouvez pas utiliser setuid pour changer l'utilisateur exécutant le script sur les démons. Le /Systemrépertoire est réservé aux tâches Mac OS X, je vous recommande donc de placer vos launchdplists dans /Libraryle ~/Librarydossier ou dans le sens voulu .
La première étape consiste donc à déterminer si vous créez un agent ou un démon.
La deuxième étape consiste à créer votre .plistfichier. Vous pouvez utiliser des programmes basés sur l'interface graphique tels que Lingon pour vous aider ou simplement utiliser votre éditeur de texte préféré:
Un exemple .plistpour exécuter un script toutes les heures ( StartIntervalou StartIntervalCalendarsont les clés que nous voulons - StartIntervalpour qu'un élément se produise toutes les xsecondes, StartIntervalCalendarpour une heure et / ou une date spécifique. Voir 126907 sur SuperUser pour un exemple que j'ai fait avec 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>
Modifiez le .plistsi nécessaire pour pointer vers votre script et tout argument si nécessaire (les arguments sont sur des lignes distinctes) et enregistrez le fichier sous le même nom que la valeur Label mais avec .plistà la fin. (par exemple, local.my-mac.flickrstatsserait enregistré sous local.my-mac.flickrstats.plist). Si vous ne l'avez pas déjà fait, déplacez ce .plistfichier vers /Library/LaunchDaemonslors de la création d'un démon (s'exécute tout le temps) ou vers ~/Library/LaunchAgents(vous seul êtes connecté) ou /Library/LaunchAgents(tout utilisateur est connecté).
Pour démarrer le travail que vous souhaitez exécuter launchctlsi nécessaire pour charger le fichier. Pour les éléments dans /Library, vous devez utiliser sudo: par exemple,sudo launchctl load -w /PATH/TO/PLIST
Pour référence, consultez également les questions suivantes sur le super utilisateur: commande Launchd en tant que root , chargez un démon à l'échelle du système et comment puis-je obtenir un script à exécuter tous les jours