Quiero que se ejecute un script (bash / zsh / ruby / ...) en el momento del arranque en OS X. ¿Cuál es la forma más sencilla de hacerlo, sin alterar los archivos xml / plist, y preferiblemente no es necesario crear un meta AppleScript? .
Quiero que se ejecute un script (bash / zsh / ruby / ...) en el momento del arranque en OS X. ¿Cuál es la forma más sencilla de hacerlo, sin alterar los archivos xml / plist, y preferiblemente no es necesario crear un meta AppleScript? .
Respuestas:
MacOS X usa Vixie cron, que tiene metaetiquetas especiales para iniciar en el momento del reinicio. Vea la página del manual para el formato de archivo.
algo como:
@reboot /path/to/script.sh
en tu crontab funcionaría. No estoy seguro de que sea una mejor solución que launchd, probablemente tengas más herramientas meta que analizan launchd que cron.
En caso de que cambie de opinión:
<?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>
Almacenar como com.superuser.245713.plist
en /Library/LaunchAgents/
y hacer root:wheel
el propietario / grupo.
/Library/LaunchAgents
lugar de hacerlo /System/Library/LaunchDaemons
porque /System
es material específico del sistema operativo y el que /Library
se usa debajo se usa más para material de terceros. Además, LaunchDaemons
"debe contener elementos que se ejecutarán como raíz, generalmente procesos en segundo plano", donde LaunchAgents
"se ejecutará como un usuario o en el contexto de userland". La fuente de esas citas es un gran artículo sobre launchd que consulto para preguntas de launchd.
También hay ganchos de inicio de sesión si prefiere que el script se ejecute (como root) cuando un usuario inicia sesión en lugar de cuando se inicia el equipo.
cron
en OS X no es tan bueno con el registro por defecto (hubo un tema al respecto hace solo unos días).