美文网首页
nginx信号控制

nginx信号控制

作者: 前浪浪奔浪流 | 来源:发表于2024-04-17 17:31 被阅读0次
    1. nginx命令控制
      注意: 此种方式依赖nginx的pid文件。如果你另外配置了nginx的pid的文件的位置,则会导致命令执行失败。报错信息为:
    nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    由报错信息可知,默认是从/run/nginx.pid来读取的。
    

    nginx的行为控制是通过-s参数来制定的,支持的值列表:
    1.stop 快速停止
    2.quit 优雅停止
    3.reload 重载配置文件
    4.reopen 滚动日志文件 我们可以看到有两种停止nginx的方式,stop和quit,这两种的区别在于stop不关心请求是否处理完成,直接退出,而quit就会等请求处理完毕后才退出,所以推荐使用quit。体验更好。

    命令实操:

    nginx -s quit
    优雅停止nginx,nginx会等待所有请求处理完毕后才停止;
    nginx -s stop
    快速停止nginx,不等待请求是否处理完毕;
    nginx -s reload
    配置文件修改后,需要reload后,nginx才会加载新的配置。当执行此命令时,nginx会检查配置文件的语法并尝试使用新的配置,如果成功,nginx将会以新的配置启动新的工作进程,并向旧的工作进程发送关闭信号,否则的话,主进程回滚更改并继续使用旧的配置和旧的工作进程。当旧进程收到关闭信号后,它将会停止接受新的请求,并在处理完旧请求的自行退出。
    nginx -s reopen
    滚动日志,这在我们的日志文件过大时,我们将日志文件mv后,发现日志文件仍在写入,这是由于mv后的文件inode相关信息不变,进行还会将日志写入到该文件中。这时我们就可以执行reopen操作,nginx就会关闭原来的句柄,在配置的日志目录下重新创建新的日志文件来进行日志记录。
    

    kill命令控制
    说到kill命令,它是在linux系统中,通过进程pid向进程发送信号的。我们可以通过kill向nginx的master进程发送特定的信号来进行对nginx的控制。至于nginx的master的pid,我们可以通过pid文件获取,也可以用ps和grep命令过滤即可。

    nginx主进程支持的信号:

    1.TERM, INT 作用和nginx -s stop一致;

    2.QUIT 作用和nginx -s quit一致;

    3.HUP 作用和nginx -s reload一致

    4.USR1 作用和nginx -s reopen一致;

    5.USR2 平滑升级nginx,这个我们以后有文章专门介绍;

    6.WINCH 平滑关闭工作进程;

    nginx工作进程支持的信号:

    1.TERM, INT 快速停止

    2.QUIT 优雅停止

    3.USR1 重新开启新的日志文件

    4.WINCH 异常终止调试(需要启用debug_points选项)

    命令实践:

    kill命令的使用格式: kill -信号名称  pid
    # 获取nginx master进程的pid
    pid=`ps auxf | grep "nginx: master"|grep -v grep|awk '{print $2}'`
    # 优雅停止
    kill -QUIT $pid
    

    nginx配置文件检查

    # 在重启或者重载配置文件前需要检查nginx配置的正确性
    nginx -c /path/to/nginx.conf -t
    
    # 正常输出示例
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    # 异常输出示例
    nginx: [emerg] unknown directive "eerror_log" in /etc/nginx/nginx.conf:3
    nginx: configuration file /etc/nginx/nginx.conf test failed
    

    kill -HUP xxx
    kill -WINCH xxx
    curl 127.1 -I
    kill -QUIT xxx
    kill -USR2 xxx
    转载自: https://cloud.tencent.com/developer/article/2013894

    相关文章

      网友评论

          本文标题:nginx信号控制

          本文链接:https://www.haomeiwen.com/subject/alfexjtx.html