launchd
exécute Daemons ( /Library/LaunchDaemons
ou /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 /System
répertoire est réservé aux tâches Mac OS X, je vous recommande donc de placer vos launchd
plists dans /Library
le ~/Library
dossier 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 .plist
fichier. 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 .plist
pour exécuter un script toutes les heures ( StartInterval
ou StartIntervalCalendar
sont les clés que nous voulons - StartInterval
pour qu'un élément se produise toutes les x
secondes, StartIntervalCalendar
pour 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 .plist
si 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.flickrstats
serait enregistré sous local.my-mac.flickrstats.plist
). Si vous ne l'avez pas déjà fait, déplacez ce .plist
fichier vers /Library/LaunchDaemons
lors 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 launchctl
si 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