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

本文介绍了如何在不中断服务的情况下对nginx进行升级和配置更改,主要聚焦于利用kill信号进行控制。讲解了如何查看和发送不同类型的信号,如TERM、INT、HUP、USR1和USR2等,特别强调了SIGUSR1用于切割日志,SIGUSR2用于平滑升级。同时,文章提到了kill命令中信号编号和名称的使用,并概述了信号的分类和区别,包括不可靠信号和可靠信号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

信号含义
TERM、INT快速关闭进程
QUIT优雅的关闭进程,即等请求结束之后再关闭
HUP改变配置文件之后、平滑的重读配置文件
USR1 切割日志
USR2Nginx平滑的升级
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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值