You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Supervisord监控Nginx进程PID?或无需Wrapper直接启动?

解决Supervisord记录Nginx PID及替代Wrapper脚本的问题

一、让Supervisord记录Nginx的PID

可以通过修改Wrapper脚本实现,核心是用exec命令将当前shell进程替换为Nginx进程,这样Supervisord监控的PID就会自动变成Nginx的PID。修改后的脚本如下:

#!/bin/env sh

export LD_LIBRARY_PATH=$ENVIRONMENT_ROOT/lib/:$LD_LIBRARY_PATH
exec /bin/nginx -g "daemon off;"

说明:exec会让当前shell进程被Nginx进程直接替换,而非启动子进程;同时-g "daemon off;"强制Nginx前台运行,避免原shell进程提前退出,确保Supervisord能持续监控Nginx进程。

二、直接在Supervisord配置中链式执行命令

完全可以不用Wrapper脚本,直接在配置里链式执行命令,但要注意Supervisord默认不会用shell解析&&这类链式语法,需用以下两种方式处理:

方式1:开启shell=true

配置示例:

[program:nginx]
command=export LD_LIBRARY_PATH=$ENVIRONMENT_ROOT/lib/:$LD_LIBRARY_PATH && /bin/nginx -c /nginx/nginx.conf -g "daemon off;"
shell=true
environment=ENVIRONMENT_ROOT=/path/to/your/env  # 按需传递环境变量

方式2:用sh -c包裹命令

如果不想开启shell=true,可以直接调用shell执行完整命令:

[program:nginx]
command=sh -c 'export LD_LIBRARY_PATH=$ENVIRONMENT_ROOT/lib/:$LD_LIBRARY_PATH && /bin/nginx -c /nginx/nginx.conf -g "daemon off;"'
environment=ENVIRONMENT_ROOT=/path/to/your/env

注意:无论哪种方式,都必须加上-g "daemon off;"让Nginx前台运行,否则Nginx会后台启动,shell进程退出后Supervisord会误判进程异常终止,触发不必要的重启。

内容的提问来源于stack exchange,提问作者Telenoobies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:18:28