0 votos

¿Cómo puedo escribir un servicio launchd que realmente detenga el servicio?

Así que tengo un plist para mantener monit en funcionamiento:

<?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.monit.service</string>
    <key>KeepAlive</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/Cellar/monit/5.10/bin/monit</string>
        <string>-d 60</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/var/log/monit.log</string>
</dict>
</plist>

Puedo hacer launchctl load /Library/LaunchDaemons/com.monit.service.plist para iniciar el servicio, pero launchctl unload /Library/LaunchDaemons/com.monit.service.plist no lo detendrá. Puedo ver que el proceso sigue funcionando sin importar lo que haga.

El proceso se muestra así (nótese que no aparece la ruta binaria, sólo el último argumento):

salida de ps aux:

root            14656   0.0  0.0  2482248   1656   ??  S     6:55PM   0:00.09 -d 60

¿Cómo puedo escribir el plist de launchd para que realmente detenga el maldito proceso cuando quiera que se detenga?

1voto

LCC Puntos 572

Deshazte del -d 60 y utilizar los argumentos launchd clave StartInterval en su lugar. Asegúrese también de que el proceso no se daemoniza a sí mismo. De acuerdo con el monit esto se consigue utilizando la función -I opción.

0voto

Malik hassan Puntos 16

Sospecho que como se está ejecutando desde /Library/LaunchDaemons/ y no el usuario ~/Library/LaunchAgents debe utilizar sudo para emitir el comando con permiso.

sudo launchctl unload /Library/LaunchDaemons/com.monit.service.plist

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X