Je veux qu'un script (bash / zsh / ruby / ...) s'exécute au démarrage sous OS X. Quelle est la façon la plus simple de le faire, sans jouer avec les fichiers xml / plist, et de préférence sans avoir besoin de faire une méta AppleScript .
Je veux qu'un script (bash / zsh / ruby / ...) s'exécute au démarrage sous OS X. Quelle est la façon la plus simple de le faire, sans jouer avec les fichiers xml / plist, et de préférence sans avoir besoin de faire une méta AppleScript .
Réponses:
MacOS X utilise Vixie cron, qui possède des balises META spéciales pour le lancement au moment du redémarrage. Voir la page de manuel pour le format de fichier.
quelque chose comme:
@reboot /path/to/script.sh
dans votre crontab fonctionnerait. Je ne suis pas sûr que ce soit une meilleure solution que launchd, vous avez probablement plus de méta-outils qui regardent launchd que cron.
Si vous changez d'avis:
<?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>com.superuser.245713</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/script.sh</string>
</array>
<key>UserName</key>
<string>someuser</string>
</dict>
</plist>
Stockez comme com.superuser.245713.plist
dans /Library/LaunchAgents/
et faites root:wheel
le propriétaire / groupe.
/Library/LaunchAgents
plutôt que dans la /System/Library/LaunchDaemons
mesure où le /System
contenu est spécifique au système d'exploitation et celui sous /Library
est davantage utilisé pour les produits tiers. En outre, LaunchDaemons
«devrait contenir des éléments qui s'exécuteront en tant que root, généralement des processus d'arrière-plan», où LaunchAgents
«s'exécuter en tant qu'utilisateur ou dans le contexte de l'espace utilisateur». La source de ces citations est un excellent article sur launchd que je consulte pour les questions de launchd.
Il existe également des hooks de connexion si vous préférez que le script s'exécute (en tant que root) lorsqu'un utilisateur se connecte plutôt que lorsque la machine est démarrée.
cron
le contraire :-) Bien que sur OS X, ce n'est pas génial avec la journalisation par défaut (il y avait un sujet à ce sujet il y a quelques jours à peine).