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

0

Así que tengo un plist para mantener monit funcionando:

<?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 se sigue ejecutando sin importar lo que haga.

El proceso se muestra así (observe cómo no se muestra la ruta binaria, solo 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 launchd plist para que realmente detenga el maldito proceso cuando quiera que se detenga?

    
pregunta marcoamorales 23.01.2015 - 04:09

2 respuestas

0

Deshazte de los argumentos -d 60 y usa la clave launchd StartInterval en su lugar. También asegúrese de que el proceso no se desmonte. De acuerdo con la página de manual monit esto se logra usando la opción -I .

    
respondido por el LCC 23.01.2015 - 11:13
0

Sospecho que ya se está ejecutando desde /Library/LaunchDaemons/ y no el usuario ~/Library/LaunchAgents necesita usar sudo para emitir el comando con permiso.

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

    
respondido por el markhunte 23.01.2015 - 05:50

Lea otras preguntas en las etiquetas