Come posso scrivere un servizio launchd che fermi effettivamente il servizio?

0

Quindi ho un plist per mantenere monit in esecuzione:

<?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>

Posso fare launchctl load /Library/LaunchDaemons/com.monit.service.plist per avviare il servizio, ma launchctl unload /Library/LaunchDaemons/com.monit.service.plist non lo fermerà. Vedo che il processo continua a funzionare, qualunque cosa io faccia.

Il processo si presenta in questo modo (nota come il percorso binario non compare, solo l'ultimo argomento):

output di ps aux:

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

Come posso scrivere il file plist di launchd in modo che interrompa effettivamente il processo di freaking ogni volta che voglio che smetta?

    
posta marcoamorales 23.01.2015 - 04:09
fonte

2 risposte

0

Sbarazzati degli argomenti -d 60 e usa invece launchd key StartInterval . Assicurati inoltre che il processo non si demoni da solo. In base alla pagina man di monit , ciò si ottiene utilizzando l'opzione -I .

    
risposta data 23.01.2015 - 11:13
fonte
0

Sospetto che dal momento che sia in esecuzione da /Library/LaunchDaemons/ e non dall'utente ~/Library/LaunchAgents devi utilizzare sudo per emettere il comando con autorizzazione.

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

    
risposta data 23.01.2015 - 05:50
fonte

Leggi altre domande sui tag