¿Cargar automáticamente LaunchDaemon?

Escribí un pequeño script para actualizar automáticamente mi ubicación de red en función de un par de condiciones, y lo combiné con una plist de inicio para que se ejecute cada dos minutos.

Sin embargo, he notado que mi plist de lanzamiento no parece cargarse cuando mi computadora se reinicia. Mi plist está adentro ~/Library/LaunchDaemonsy es bastante simple:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.davedelong.location-updater</string>
    <key>Program</key>
    <string>/path/to/my/location_updater.rb</string>
    <key>StartInterval</key>
    <integer>180</integer>
</dict>
</plist>

Mi LaunchDaemonscarpeta tiene los 700permisos esperados y ejecutar launchctl loadcon mi plist hace que las cosas funcionen bien. Es solo que cuando reinicio, no se carga.

Tenía la impresión de que todo ~/Library/LaunchDaemonsestaba ~/Library/LaunchAgentscargado automáticamente por launchd. ¿No es este el caso? Si este es el caso (y creo que lo es), ¿por qué no se carga mi plist?

Respuestas (1)

~/Library/LaunchDaemonsno es una ubicación válida ni para los agentes de lanzamiento ni para los demonios de lanzamiento. Estás malinterpretando la terminología. Los LaunchDaemons son procesos de todo el sistema, mientras que los LaunchAgents se ejecutan por usuario. Desde la página man de launchd:

~/Library/LaunchAgents         Per-user agents provided by the user.
/Library/LaunchAgents          Per-user agents provided by the administrator.
/Library/LaunchDaemons         System-wide daemons provided by the administrator.
/System/Library/LaunchAgents   Per-user agents provided by Mac OS X.
/System/Library/LaunchDaemons  System-wide daemons provided by Mac OS X.

Mueve tu plist a ~/Library/LaunchAgents, y debería funcionar.

Ajá. ¡Documentación al rescate!