从nginx不停服升级/更改配置,浅谈kill信号

nginx不停服务升级是通过信号控制完成的。

nginx信号控制使用的几个选项

信号 含义
TERM、INT 快速关闭进程
QUIT 优雅的关闭进程,即等请求结束之后再关闭
HUP 改变配置文件之后、平滑的重读配置文件
USR1  切割日志
USR2 Nginx平滑的升级
WINCH 优雅的关闭旧进程,配合USR2进行升级

如何通过信号控制nginx,命令格式如下:

kill -[ TERM | INT | QUIT | HUP | USR1 | USR2 | WINCH ] pid(nginx进程编号)

pid可以通过sudo cat `sudo find / -name nginx.pid`或者sudo ps -ef|grep nginx|grep master查看

nginx的信号控制是通过kill来实现的。其实kill就有相应的信号,通过 kill -l 可以查看所有信号:

其中SIGUSR1,SIGUSR2属用户自定义信号,不同应用可以将其用于不同的功能,如nginx的SIGUSR1和SIGUSR2分别代表切割日志与平滑升级。

在kill命令中可以使用信号名(或者去掉SIG前缀的简写)也可以使用信号的编号,如 kill -9 pid 或者 kill -KILL pid 或者 kill -SIGKILL pid

这么多的信号,常用的不多,记住下面几个就可以了:

信号编号信号名简写含义
0 SIGEXIT  EXIT  程序退出时收到该信息。
1 SIGHUP HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 SIGINT INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 SIGQUIT QUIT 退出。
9 SIGKILL KILL 杀死进程,即强制结束进程。(最常用,简单粗暴,进程异常终止)
11 SIGSEGV  SEGV  段错误。
15 SIGTERM TERM 正常结束进程,是 kill 命令的默认信号。

kill信号简单概括一下:编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。

posted on 2021-02-02 23:21  叮糖小葱  阅读(304)  评论(0)    收藏  举报

导航