启动nginx之后,如果想平滑的停止,等操作,如何处理?通过信号。
nginx分成master进程和多个子进程,主进程不想用浏览器请求,而是管理和控制多个子进程,
kill -INT 主进程pid 则杀死所有nginx进程。
TERM, INT 是紧急杀死nginx进程
QUIT 优雅的关闭进程,等待所有请求结束后,停止进程。同样的功能,可以通过nginx -s stop实现
HUP 改变配置文件,平滑的重读配置文件,开启新的worker进程,然后优雅的关闭旧的worker进程。
kill -HUP 主master进程pid 就可以实现平滑重读配置文件,同样的功能,nginx -s reload 也可以实现。
USR1 重新读取日志文件信号,新建日志文件,日志文件进行切割,当我们将nginx的输出日志进行mv操作,设置成备份的名字之后,新建一个日志文件(默认写入的日志文件),发现logs信息没有写入新的日志文件,而是继续写入旧的日志文件(mv之后的那个日志),这是因为虽然mv文件名字发生变化了,但是linux中写文件是针对inode块进行写入的,虽然修改了文件描述符的文件名,但是inode信息还是没有改变,这时候,使用kill USR1 nginx主进程pid,则立刻会启动新的那个日志文件了,实现了日志切分。同样的功能,可以通过nginx -s reopen实现。
USR2平滑升级信号 WINCH配合USR2实现平滑升级,优雅关闭旧的nginx进程
可以读取nginx的pid文件,实现kill信号传递,kill HUP `cat logs/nginx.pid`
nginx -s stop/quit/reload/repen 使用nginx -h进行帮助