Launchd no cargará lists en el arranque

Tengo un set de scripts que deben ejecutarse al arrancar el sistema y mantenerse con vida. Tengo el plist guardado como /Library/LaunchAgents/net.vps.tunnel.plist y tiene los permissions adecuados:

-rw-r--r-- 1 root wheel 516 Nov 6 22:03 net.vps.tunnel.plist 

El script se almacena en el directory raíz /Library/LaunchAgents , NO en el directory ~/Library/LaunchAgents del usuario, por lo que se supone que debe ejecutarse en el arranque como superusuario. Si ejecuto manualmente el script mediante sudo launchctl load /Library/LaunchAgents/net.vps.tunnel.plist se ejecuta sudo launchctl load /Library/LaunchAgents/net.vps.tunnel.plist . Pero a pesar de que se supone que debe ejecutarse en el arranque, no es así. Cuando compruebo launchctl list inmediatamente después del inicio, veo que no se ha cargado. Intentando iniciar vía sudo launchctl start net.vps.tunnel falla con el error "launchctl start error: No such such process".

Si inicio session a través de la GUI, de repente launchd carga todas las secuencias de commands. Sin embargo, se ejecutan con mis permissions de usuario y algunos de ellos no funcionan correctamente. En las lists, he especificado la key UserName como usuario de daemon, pero todas se ejecutan bajo mis cnetworkingenciales de usuario.

Aquí está el file plist en cuestión, ubicado en /Library/LaunchAgents/net.vps.tunnel.plist y con permissions -rw-r – r– para root: wheel:

 <?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>net.vps.tunnel</string> <key>ProgramArguments</key> <array> <string>/Users/_tunnel/tunnel.sh</string> </array> <key>RunAtLoad</key> <true/> <key>WorkingDirectory</key> <string>/Users/_tunnel</string> <key>UserName</key> <string>_tunnel</string> <key>KeepAlive</key> <true/> </dict> </plist> 

Y aquí está la secuencia de commands del túnel, con permissions -rwxr-x — para _tunnel: _tunnel:

 #/bin/bash logger "Opening VPS tunnel..." ssh -i ./.ssh/id_rsa -gnN tunnel@********.com & PID=$! logger "VPS tunnel is now open." wait $PID logger "VPS tunnel is now closed." exit 0 

Intente mover el plist a / Library / LaunchDaemons /. Los agentes (que no sean agentes de inicio de session previos) se ejecutan solo después de que un usuario inicia session y son propiedad del usuario. Además, la key UserName no tiene ningún efecto para los agentes.

Ver la nota técnica Daemons and Agents .