Uno dei problemi, devo affrontare con supervisord è che quando ho un comando che a sua volta genera un altro processo, supervisord non è in grado di ucciderlo.supervisione arrestando i processi figlio
Per esempio io ho un processo Java, che quando viene eseguito normalmente è come
$ zkServer.sh start-foreground
$ ps -eaf | grep zk
user 30404 28280 0 09:21 pts/2 00:00:00 bash zkServer.sh start-foreground
user 30413 30404 76 09:21 pts/2 00:00:10 java -Dzookeeper.something..something
Il file di configurazione supervisord assomiglia:
[program:zookeeper]
command=zkServer.sh start-foreground
autorestart=true
stopsignal=KILL
Questo tipo di processi che hanno più bambino non sono ben gestite da supervisord quando si tratta di fermarli da supervisorctl
. Quindi quando eseguo questo dal supervisord e provo a fermarlo da supervisorctl, solo il processo di livello superiore viene ucciso ma non il vero processo java.
È a mia conoscenza che l'uso di ['systemd'] (http://en.wikipedia.org/wiki/Systemd)' init'-replacement di ['cgroups'] (http: //en.wikipedia. org/wiki/Cgroups) consente il monitoraggio affidabile dei processi figli. Potrebbe essere adatto alle tue esigenze. – sarnold
eh stackoverflow sta cambiando di nuovo 'supervisord' in 'supervisionato'! – FUD