kolypto Asked: 2014-06-27 02:23:25 +0800 CST2014-06-27 02:23:25 +0800 CST 2014-06-27 02:23:25 +0800 CST 使用主管管理守护进程:没有可用的前台模式 772 我正在尝试使用supervisord管理进程,但该进程没有在前台运行的选项:它总是守护进程。(那是 Zabbix 服务器)。 有没有办法用主管管理守护进程?有什么工具可以让它在前台运行?或者,也许,以某种方式使用 pidfile? daemon 3 个回答 Voted Best Answer kolypto 2014-06-27T02:25:54+08:002014-06-27T02:25:54+08:00 为了解决这个问题,我们需要一些在前台运行的程序,它在守护进程退出时退出,并且还代理给守护进程的信号。 考虑使用以下脚本 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 MrOppermann 2017-08-11T03:30:48+08:002017-08-11T03:30:48+08:00 以防有人像我一样使用搜索引擎来解决这个问题。 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 一切顺利 mistbow 2019-10-28T13:29:24+08:002019-10-28T13:29:24+08:00 我使用fg process-name切换到前台,如 主管文档中所示
为了解决这个问题,我们需要一些在前台运行的程序,它在守护进程退出时退出,并且还代理给守护进程的信号。
考虑使用以下脚本 bash 脚本:
以防有人像我一样使用搜索引擎来解决这个问题。
Zabbix 从 v3.0.0beta1 开始提供在前台运行的“-f”选项(https://support.zabbix.com/browse/ZBXNEXT-611)
正如您在下面看到的,我们使用二进制文件的绝对路径(我们从源代码编译它)开始该过程,使用“-c”开关和配置文件的绝对路径提供我们的配置文件。然后提到的“-f”开关在前台运行进程。
我们使用的 supervisord 配置文件如下所示:
请注意我们在zabbix-server.conf中配置
一切顺利
我使用
fg process-name
切换到前台,如 主管文档中所示