Я пытаюсь управлять процессом с помощью руководитель, но у процесса нет возможности работать на переднем плане: он всегда демонизируется. (Это 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
переключиться на передний план, как показано на документы руководителя