核心原则
统一用 systemctl 管理服务;nginx 命令只用来做配置校验、临时调试,不再用
nginx -s reload/quit启停! 因为现在进程交给 systemd 托管,混用两套控制命令容易造成 PID 错乱、systemd 状态和真实进程不一致。
✅ 分工(记好)
1)日常运维(生产优先,全部用 systemctl)
2)nginx 命令(软链接做好后,仅用于调试校验,不要用来启停)
🚨 你当前现状:nginx 已经在运行(不是systemd拉起的)
现在进程是老的手动启动的,systemd 还没有接管它
一次性切换接管步骤(必须做一次)
执行完这一步之后:
-
master进程由 systemd 拉起 -
以后只使用 systemctl 启停/reload -
nginx命令只做nginx -t校验配置
为什么不建议混用两套管理方式?
-
如果你手动 nginx -s quit,systemd 配置了Restart=on-failure,会立刻自动重启nginx,造成反复拉起 -
systemd 内部记录 PID,手动 nginx -s reload 会更新pid文件,systemd 状态和真实进程不同步, systemctl status显示异常 -
服务器重启后,只有 systemd 托管的进程才会开机自启
✅ 标准上线后操作流程(以后每次改nginx配置固定这套)
简单一句话总结
切换托管前:老进程只能用 nginx -s quit 停;切换托管成功之后:管理全部 systemctl,nginx 命令只用来校验配置。

