nginx的启停控制命令详解

一,原理&概述

Nginx服务的启停在Linux下有很多种,有一类是通过信号机制来实现的

Nginx在运行时会保持一个主进程和一个或多个worker process工作进程。既然有主进程,那么我们给老大发个信息是不是就关掉Nginx了呢?

这里我们通过进程号PID来发送信号,获取PID有两个方法:

1.Nginx服务启动时安装目录下的logs目录会自动生成文件名为Nginx.pid的文件


我们看到PID为1094

2.通过ps查看进程


从运行结果来看,系统中有一个主进程master process和一个工作进程worker process,主进程的PID为1094,与nginx.pid中的值一致

Nginx服务可以接受的信号

序号 信号 作用
1 TERM或INT 快速停止nginx服务
2 QUIT 平缓停止Nginx服务
3 HUP 使用新的配置文件启动进程,之后平缓停止原有进程,也就是常说的”平滑重启“
4 USR1 重新打开日志文件,常用于日志切割
5 USR2 使用新版本的Nginx文件启动服务,之后平缓停止原有进程,也就是所谓的“平滑升级”
6 WHINCH 平缓停止(工作进程)worker porcess,用于Nginx的平滑升级

向Nginx服务的主进程发送信号也是有两种方法:
1.使用nginx二进制文件

序号 选项 作用
1 -?或-h this help,显示帮助信息
2 -v show version and exit,打印版本号并退出
3 -V show version and configure options then exit,打印版本号和配置并退出
4 -t test configuraion and exit,测试配置并退出
5 -q suppress non-error mess ages during configuration testing,测试配置时只显示错误
6 -s signal send signal to a master process: stop,quit,reopen,reload,向主进程发送信号
7 -p prefix set prefix path (default: /Nginx/bin/) 指定Nginx服务器路径前缀
8 -c filename set configuration file(default: conf/nginx.conf)指定Nginx配置文件路径
9 -g directives set global directives out of configuration file,指定Nginx附加配置文件路径

2.使用kill命令发送信号,语法是:
kill SIGNAL PID
SIGNAL就是上面表里的某一个,PID肯定就是主进程的pid咯,也可以用nginx.pid文件来动态获取PID。
kill SIGNAL */logs/nginx.pid
(路径根据自己的填)

实例
##Nginx服务的停止 刚才我们说过,停止Nginx有两种方法: 1.快速停止,指立即停止当前Nginx正在处理的所有网络请求,马上丢弃,停止工作; 2.平缓停止,指允许Nginx将当前正在处理的网络请求处理完,但不能接受新的请求,处理完后关闭连接,停止工作。 首先使用二进制文件来发送信号 `[root@iZgt88z6l1kvd7Z nginx]# nginx -g TERM` #快速停止 `[root@iZgt88z6l1kvd7Z nginx]# nginx -g INT` #快速停止 `[root@iZgt88z6l1kvd7Z nginx]# nginx -g QUIT` #平缓停止 或者是使用kill来发送信号 `[root@iZgt88z6l1kvd7Z nginx]# kill TERM |INT|QUIT '/Nginx/logs/nginx.pid'`

Nginx服务的重启

平滑重启,首先nginx读取新的配置文件,如果语法正确,则启动新的服务,然后缓慢关闭旧的服务进程;当然如果新的配置有错误,nginx仍然会使用旧的Nginx进程来维持生计。

  `[root@iZgt88z6l1kvd7Z nginx]# nginx -g HUP [-c NewConfigurefile]`
  HUP--发送平滑重启信号
  Newconfigurefile--新的配置文件,或者用新的配置文件替代了旧的文件后使用:
  `[root@iZgt88z6l1kvd7Z nginx]# kill HUP '/home/web/server/nginx/logs/nginx.pid'`

Nginx服务的升级

Nginx服务的

Nginx服务的

原文地址:https://www.cnblogs.com/hxlinux/p/12907758.html