![使用主管管理守护进程:没有可用的前台模式](https://linux22.com/image/635906/%E4%BD%BF%E7%94%A8%E4%B8%BB%E7%AE%A1%E7%AE%A1%E7%90%86%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%EF%BC%9A%E6%B2%A1%E6%9C%89%E5%8F%AF%E7%94%A8%E7%9A%84%E5%89%8D%E5%8F%B0%E6%A8%A1%E5%BC%8F.png)
我正在尝试管理一个流程主管,但该进程没有在前台运行的选项:它始终处于守护进程状态。(这是 Zabbix 服务器)。
有没有办法用主管管理守护进程?有什么工具可以让它在前台运行?或者,以某种方式使用 pidfile?
答案1
为了解决这个问题,我们需要一些在前台运行的程序,当守护进程退出时该程序也会退出,并且还会向守护进程发送信号。
考虑使用以下脚本 bash 脚本:
#! /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
答案2
以防万一有人像我一样使用搜索引擎来解决这个问题。
Zabbix 自 v3.0.0beta1 起提供“-f”选项以在前台运行(https://support.zabbix.com/browse/ZBXNEXT-611)
如下所示,我们使用二进制文件的绝对路径(我们从源代码编译它)启动进程,使用“-c”开关和配置文件的绝对路径提供我们的配置文件。然后使用提到的“-f”开关在前台运行进程。
我们使用的supervisord配置文件如下:
[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
一切顺利
答案3
我使用fg process-name
切换到前台,如下图所示
主管文档