服务器nginx进程怎么停止?

使用nginx 命令的-s 信号参数(推荐)

这是最常用和推荐的方法,因为它会让 Nginx 优雅地停止。

1. 优雅停止

这种方式会让 Nginx 完成当前正在处理的请求后再停止,是生产环境的首选。

sudo nginx -s quit

2. 快速停止

这种方式会立即停止 Nginx,可能会中断正在处理的请求。

sudo nginx -s stop

说明:

quit:优雅停止,等待工作进程处理完当前的请求。

stop:快速停止。

方法二:使用systemctl 命令(如果系统使用 Systemd)

绝大多数现代的 Linux 发行版(如 CentOS 7/8, Ubuntu 16.04+, Debian 8+)都使用systemd 来管理服务。

1. 停止 Nginx 服务

sudo systemctl stop nginx

2. 其他相关命令

启动 Nginxsudo systemctl start nginx

重启 Nginxsudo systemctl restart nginx

重新加载配置(不中断服务)sudo systemctl reload nginx

查看 Nginx 状态sudo systemctl status nginx

方法三:使用kill 命令(传统方法)

如果上述命令都不可用,你可以直接向 Nginx 主进程发送信号。

步骤:

1、查找 Nginx 主进程的 PID(进程ID)

    ps -ef | grep nginx

输出结果中,master process 的就是主进程,它的 PID 通常在第一列。

    root      1234     1  0 Jul10 ?        00:00:00 nginx: master process /usr/sbin/nginx
    nginx     5678  1234  0 Jul10 ?        00:00:00 nginx: worker process

在这个例子中,主进程 PID 是1234

2、向主进程发送信号

优雅停止(等同于nginx -s quit):

      sudo kill -QUIT 1234
      # 或者使用信号代号
      # sudo kill -3 1234

快速停止(等同于nginx -s stop):

      sudo kill -TERM 1234
      # 或者
      # sudo kill -15 1234

强制停止不推荐,万不得已时使用):

      sudo kill -9 1234

警告kill -9 是强制杀死信号,进程无法捕获也无法做出任何清理工作,可能会导致数据丢失或配置文件损坏,请尽量避免使用。

方法 命令 适用场景
推荐方法sudo nginx -s quit 优雅停止,适合所有环境
系统服务sudo systemctl stop nginx 优雅停止,Systemd 系统首选
信号控制sudo kill -QUITnginx 命令不可用时

停止后如何确认?

停止后,你可以使用以下命令来确认 Nginx 是否已关闭:

方法1:检查进程
ps -ef | grep nginx
方法2:检查端口(Nginx 默认监听80和443端口)
sudo netstat -tulpn | grep :80
或者使用 ss 命令
sudo ss -tulpn | grep :80
方法3:如果使用 systemd,检查状态
sudo systemctl status nginx

如果这些命令没有返回关于 Nginx 的监听信息或进程信息,说明它已经成功停止了。

常见问题

Q: 执行nginx -s quit 时提示nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed

A: 这通常意味着 Nginx 并未在运行,或者 pid 文件被误删了,你可以用ps -ef | grep nginx 检查进程是否存在,如果存在,请使用方法三(kill 命令)来停止它。

Q: 停止后如何启动?

A: 根据你停止的方式,使用对应的启动命令:

sudo nginx

sudo systemctl start nginx

文章摘自:https://idc.huochengrm.cn/fwq/17282.html

评论