Gerenciando daemons com supervisor: nenhum modo de foreground disponível

7

Estou tentando gerenciar um processo com supervisord , mas o processo não tem uma opção para ser executado em primeiro plano: ele sempre daemoniza. (Esse é o Zabbix Server).

Existe alguma maneira de gerenciar daemons com supervisor? Quaisquer ferramentas que o farão funcionar em primeiro plano? Ou talvez, use o pidfile de alguma forma?

    
por kolypto 26.06.2014 / 12:23

2 respostas

11

Para lidar com o problema, precisaremos de algum programa rodando em primeiro plano, que sai sempre que o daemon sai, e que também envia sinais para o daemon.

Considere o uso do seguinte script bash de script:

#! /usr/bin/env bash
set -eu

pidfile="/var/run/your-daemon.pid"
command=/usr/sbin/your-daemon

# Proxy signals
function kill_app(){
    kill $(cat $pidfile)
    exit 0 # exit okay
}
trap "kill_app" SIGINT SIGTERM

# Launch daemon
$command
sleep 2

# Loop while the pidfile and the process exist
while [ -f $pidfile ] && kill -0 $(cat $pidfile) ; do
    sleep 0.5
done
exit 1000 # exit unexpected
    
por 26.06.2014 / 12:25
1

apenas no caso de alguém resolver essa questão usando os mecanismos de pesquisa como acabei de fazer.

O Zabbix oferece desde a v3.0.0beta1 a opção "-f" para executar em primeiro plano ( link )

Como você pode ver abaixo, nós iniciamos o processo usando o caminho absoluto para binário (nós o compilamos de fontes), fornecendo nosso arquivo de configuração usando a opção "-c" e o caminho absoluto para o arquivo de configuração. E, em seguida, o mencionado "-f" alternar para executar o processo em primeiro plano.

O arquivo de configuração do supervisord que usamos se parece com:


[program:zabbix-server]
command=/opt/application/zabbix-server/3.2.7/zabbix_server -c /opt/application/zabbix-server/3.2.7/zabbix-server.conf -f

startsecs=5
startretries=3

autostart=true
autorestart=true

user=zabbix

stdout_logfile=/data/application/zabbix-server/3.2.7/log/zabbix-server.log
stderr_logfile=/data/application/zabbix-server/3.2.7/log/zabbix-server-stderr.log

Por favor, note que nós configuramos no zabbix-server.conf


LogType=console

Tudo de bom

    
por 10.08.2017 / 13:30