一,原理&概述
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读取新的配置文件,如果语法正确,则启动新的服务,然后缓慢关闭旧的服务进程;当然如果新的配置有错误,nginx仍然会使用旧的Nginx进程来维持生计。
`[root@iZgt88z6l1kvd7Z nginx]# nginx -g HUP [-c NewConfigurefile]`
HUP--发送平滑重启信号
Newconfigurefile--新的配置文件,或者用新的配置文件替代了旧的文件后使用:
`[root@iZgt88z6l1kvd7Z nginx]# kill HUP '/home/web/server/nginx/logs/nginx.pid'`