Назад | Перейти на главную страницу

Управление демонами с супервизором: режим переднего плана недоступен

Я пытаюсь управлять процессом с помощью руководитель, но у процесса нет возможности работать на переднем плане: он всегда демонизируется. (Это Zabbix Server).

Есть ли способ управлять демонами с супервизором? Какие-нибудь инструменты, которые заставят его работать на переднем плане? Или, может быть, как-нибудь использовать pidfile?

Чтобы справиться с проблемой, нам понадобится некоторая программа, работающая на переднем плане, которая завершается всякий раз, когда демон завершает работу, и которая также передает сигналы демону.

Рассмотрите возможность использования следующего сценария bash 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

на случай, если кто-то подойдет к этому вопросу, используя поисковые системы, как это сделал я.

Начиная с версии v3.0.0beta1 Zabbix предлагает параметр "-f" для запуска на переднем плане (https://support.zabbix.com/browse/ZBXNEXT-611)

Как вы можете видеть ниже, мы запускаем процесс, используя абсолютный путь к двоичному файлу (мы скомпилировали его из исходных текстов), предоставляя наш файл конфигурации с помощью переключателя «-c» и абсолютного пути к файлу конфигурации. И затем упомянутый переключатель «-f» для запуска процесса на переднем плане.

Используемый нами файл конфигурации супервизора выглядит так:


[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

Обратите внимание, что мы настроили в zabbix-server.conf


LogType=console

Всего наилучшего

я использую fg process-name переключиться на передний план, как показано на документы руководителя