Citando a http://launchd.info :
- ~/Library/LaunchAgents y /Library/LaunchAgents se utilizan para el usuario actualmente conectado.
- /Library/LaunchDaemons es para ejecutar cosas como Root ( o el usuario especificado con el
UserName
) cuando la máquina arranca.
Sin embargo, la clave (no es un juego de palabras) es que las listas colocadas en /Library/LaunchDaemons/
debe ser propiedad por root:wheel
y debe ser chmod 644
.
Así que, sólo porque nrpe
crea un plist no significa que se ejecutará en el arranque sin iniciar sesión.
Lo instalé a través de brew
a mí mismo, y al final dice:
To have launchd start nrpe at login:
ln -sfv /usr/local/opt/nrpe/*.plist ~/Library/LaunchAgents
Then to load nrpe now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nrpe.plist
Te recomiendo que hagas esto, en su lugar:
chmod 644 /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist
sudo chown root:wheel /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist
sudo ln /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist /Library/LaunchDaemons/homebrew.mxcl.nrpe.plist
La primera línea asegura que los permisos son correctos.
La segunda línea asegura que la propiedad es correcta
La tercera/última línea enlaza el archivo de /usr/local/opt/nrpe/ a /Library/LaunchDaemons (nótese la ausencia de un ~
que es intencional).
Entonces hay que asegurarse de que el archivo hace no existen en ~/LaunchAgents, lo que sería confuso:
rm -f "$HOME/Library/LaunchAgents/homebrew.mxcl.nrpe.plist"
Esto eliminará el archivo (si existe).
Importante
Al colocar el archivo en /Library/LaunchDaemons
le dirás a nrpe
para que se ejecute como root
. Eso puede estar bien, o puede ser una muy mala idea. No sé la respuesta a esa pregunta. Sin embargo, para estar seguro yo haría que se ejecutara explícitamente como usuario otros que Root a menos que esté absolutamente seguro. Además, utilizaría launchd
La capacidad de registrar errores para ver si está funcionando bien.
Para ello tendrás que editar el plist mencionado anteriormente. Aquí está el archivo como se crea originalmente, a partir de 2016/04/20:
<?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>org.nrpe.agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/nrpe</string>
<string>-c</string>
<string>/usr/local/etc/nrpe.cfg</string>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Homebrew NRPE Agent</string>
<key>Debug</key>
<true/>
</dict>
</plist>
y esta es la versión que yo recomendaría:
<?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>Debug</key>
<true/>
<key>GroupName</key>
<string>staff</string>
<key>InitGroups</key>
<true/>
<key>Label</key>
<string>org.nrpe.agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/nrpe</string>
<string>-c</string>
<string>/usr/local/etc/nrpe.cfg</string>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Homebrew NRPE Agent</string>
<key>StandardErrorPath</key>
<string>/tmp/org.nrpe.agent.stderr.log</string>
<key>StandardOutPath</key>
<string>/tmp/org.nrpe.agent.stdout.log</string>
<key>UserName</key>
<string>INSERTUSERNAMEHERE</string>
</dict>
</plist>
Sustituir INSERTUSERNAMEHERE
con el nombre de usuario real del usuario que desea nrpe
para correr como.
Desaprobado
Tenga en cuenta que, según LaunchControl (que es la mejor aplicación que existe para gestionar los plists de launchd) el Debug
está obsoleta para OS X 10.10 y será ignorada.
Reiniciar
Una vez que tenga el archivo en su lugar, la mejor manera de probarlo será reiniciar el sistema y NO entrar en la consola. En su lugar, después de que el proceso de arranque se haya completado, inicie sesión a través de ssh
y asegúrese de que el proceso se está ejecutando, y compruebe los dos archivos de registro para ver qué, si algo, se ve allí.
Espero que esto ayude.
ps - gastar 10 dólares en LaunchControl . Es una gran aplicación. No hay código de registro para que no tienen pagar por ella, pero deberías hacerlo porque el desarrollador confía en que lo hagas si utilizas la aplicación.