参考资料:

  Nginx中文文档: http://www.nginx.cn/nginxchscommandline

  Nginx的启动、停止、平滑重启、信号控制和平滑升级:http://zachary-guo.iteye.com/blog/1358312

命令行参数:

常用命令:

  -c filename:设置配置文件。

  -t :不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。

  -s :传递一个信号,stop快速关闭,quit从容关闭,reopen重新打开日志文件、用于切换日志文件,reload重载配置文件。

  -v :显示nginx的版本。

  -V:显示nginx的版本,编译器版本和配置参数

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[root@localhost /]# alias nginx='/usr/local/nginx/sbin/nginx'
[root@localhost /]# alias


[root@localhost /]# nginx -h
nginx version: nginx/1.11.
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file [root@localhost /]#

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

控制信号:

  可以使用信号系统来控制主进程。默认,nginx 将其主进程的 pid 写入到 /usr/local/nginx/logs/nginx.pid 文件中。通过传递参数给 ./configure 或使用 pid 指令,来改变该文件的位置。

主进程可以处理以下的信号:

TERM,INT 快速关闭
QUIT 从容关闭
HUP

重新配置

用新的配置开始新的工作进程

从容关闭旧的工作进程

USR1 重新打开日志文件,在切割日志时用途较大
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程

  

启动:

  启动代码格式:nginx安装目录地址 -c nginx配置文件地址

[root@localhost ~]# alias nginx='/usr/local/nginx/sbin/nginx'
[root@localhost ~]# nginx -c /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# ps -ef|grep nginx
root 2073 1 0 10:37 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 2074 2073 0 10:37 ? 00:00:00 nginx: worker process
root 2076 2022 0 10:37 pts/0 00:00:00 grep nginx
[root@localhost ~]#   

停止:

  从容停止:

# ` 字符是数字键盘 1 字符左边的那个字符
[root@localhost ~]# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`

  快速停止:

[root@localhost ~]# kill -TERM `cat /usr/local/nginx/logs/nginx.pid`  

    或

[root@localhost ~]# kill -INT `cat /usr/local/nginx/logs/nginx.pid`

  强行停止:

[root@localhost ~]# kill -9 nginx

重启:

  1.普通重启:关闭进程,修改配置后,重启进程

  2.重新加载配置文件,不重启进程,不会停止处理请求

  3.平滑更新nginx二进制,不会停止处理请求

=========================================================================

注意:在重载前,测试一下配置文件:

# -t 参数将检查配置文件的语法是否正确,默认会检查 /usr/local/nginx/conf/nginx.conf 文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 如果要对指定配置文件进行语法检查,可以继续添加 -c 参数
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]#

=========================================================================

nginx的平滑重启:

  如果改变了nginx的配置文件,想重启nginx,同样可以发送系统型号给nginx主进程的方式来进行,重启之前,要确认配置文件是否正确

[root@localhost ~]# kill -HUP 【nginx主进程号】

  当 nginx 接收到 HUP 信号时,它会尝试先解析配置文件,如果成功,就应用新的配置文件(例如,重新打开日志文件或监听的套接字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字,但是继续为当前连接的客户提供服务。所有的客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,nginx 将继续使用旧的配置文件进行工作。

nginx的平滑升级:

  当需要将正在运行中的nginx升级、添加/删除服务器模块时,可以在不中断服务的情况下,使用新的nginx可执行程序替换旧的:

  1.使用新的可执行程序替换旧的可执行程序,对于编译安装的nginx,可以将新版本编译安装到nginx安装路径中,替换之前,备份一下旧的可执行文件

  2.发送以下指令:

[root@localhost ~]# kill -USR2 【旧版本的nginx主进程号】

  3.旧版本的nginx的主进程将重命名它的pid文件为.oldbin(例如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新版本的nginx可执行程序,依次启动新的主进程和新的工作进程。

  4.此时,新、旧版本的nginx实例会同时运行,共同处理输入的请求,要逐步停止旧版本的nginx,必须发送WINCH信号给旧的主进程,然后,它的工作进程就开始从容关闭:

[root@localhost ~]# kill -WINCH 【旧版本的nginx主进程号】

  5.一段时间后,旧的工作进程(worker process)处理了所有已连接的请求后退出,仅由新的工作进程来处理输入的请求了。

  6.这时候,可以决定是使用新版本,还是恢复到旧版了:

    kill -HUP  【旧的主进程号】:nginx将在不重载配置文件的情况下启动它的工作进程

    kill -QUIT 【新的主进程号】:从容关闭其工作进程(worker process)

    kill -TERM 【新的主进程号】:强制退出

    kill 【新的主进程号或旧的主进程号】:如果因为某些原因新的工作进程不能退出,则向其发送kill信号

  新的主进程退出后,旧的主进程会移除.oldbin前缀,恢复为它的.pid文件,这样,一切就都恢复到升级之前了。

  如果尝试升级成功,而你也希望保留新的服务器时,可发送QUIT信号给旧的主进程,使其退出而只留下新的服务器运行。

运行和控制Nginx——命令行参数和信号的更多相关文章

  1. nginx命令行参数和信号

    nginx命令行参数 [user@host dir]$ /usr/local/nginx/sbin/nginx -hnginx version: nginx/1.8.0Usage: nginx [-? ...

  2. nginx命令行参数

    通过控制台进入nginx目录后 1. 启动nginx start nginx 或 nginx.exe 2. 重启nginx nginx -s reload 3. 停止nginx nginx -s st ...

  3. 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数 2

    我们这一节会先去分析下monkeyrunner是如何对参数进行处理的,我们跳转到MonkeyRunnerOptions这个类里面的processOptions这个方法: 93   public sta ...

  4. nginx 命令行参数 启动 重启 重载 停止

    今天和大家分享关于 nginx 的一些参数使用 首先,你应该安装了nginx CentOS 安装 nginx 这是很早之前的一篇博客,可以参考. 之前,我们如何去操作 nginx ##简单粗暴法 pk ...

  5. 运行和控制Nginx

    Nginx命令行选项 启动.停止.重启nginx命令 如何重新加载nginx配置文件 nginx程序不重启平滑升级可执行文件   nginx命令行参数 不像许多其他软件系统,Nginx 仅有几个命令行 ...

  6. 【python3基础】命令行参数及 argparse

    目录 命令行参数及 argparse 包 argparse 传递 bool 参数错误做法 argparse 传递 bool 参数正确做法 1 argparse 传递 bool 参数正确做法 2 Ref ...

  7. httprunner学习15-运行用例命令行参数详解

    前言 HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制. 命令行参数CLI 使用 -h 查看相关命令行参数 hrun -h 参数名称 参数值 参数说明 -h, --h ...

  8. Nginx命令行控制

    在Linux中,需要使用命令行来控制Nginx服务器的启动与停止.重载配置文件.回滚日志文件.平滑升级等行为.默认情况下,Nginx被安装在目录usrlocal/nginx/中,其二进制文件路径为us ...

  9. nginx使用手册--nginx的命令行参数

    nginx的命令行参数 -? 或者 -h 打印命令行参数帮助信息 -c file 为 Nginx 指定一个配置文件,来代替缺省的. -t 不运行,而仅仅测试配置文件.nginx 将检查配置文件的语法的 ...

随机推荐

  1. hihoCoder #1106 : Koch Snowflake 微软苏州校招笔试(1月17日)

    描述 Koch Snowflake is one of the most famous factal. It is built by starting with an equilateral tria ...

  2. 5、CentOS 6.5系统安装配置Nginx-1.2.7+PHP-5.3.22环境

    一,操作系统 以最小服务器形式安装系统,并添加开发工具库,便于后期编译使用. 此处基本都是下一步,下一步,不再废话. 安装完成,进入系统,调通网络,关闭防火墙或打开相应的WEB端口. 以下安装操作默认 ...

  3. Opencv改变图像亮度和对比度以及优化

    https://blog.csdn.net/u013139259/article/details/52145377 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  4. Docker学习笔记之编写 Docker Compose 项目

    0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...

  5. 判断PC或mobile设备

    js 限制: <script type="text/javascript"> function uaredirect(f){try{if(document.getEle ...

  6. Python之字符编码(一)

    一.了解字符编码的知识储备? 1.计算机基础知识? 计算机中所有的软件文件(包括:操作系统)都存储在硬盘,启动计算机,计算机需要把系统文件都去到内存中. 2.文本编辑器存取文件的原理(nodepad+ ...

  7. 【题解】Luogu P2147 [SDOI2008]洞穴勘测

    原题传送门 这题用Link-Cut-Tree解决,Link-Cut-Tree详解 我不太会踩爆Link-Cut-Tree的并查集做法qaq 我们用Link-Cut-Tree维护连通性(十分无脑) Co ...

  8. yum指定安装目录

    纯粹做笔记 yum -c /etc/yum.conf --installroot=/opt/test/ --releasever=/ install lrzsz

  9. gitlab服务器迁移

    公司更换了新的服务器,需要把原先的gitlab迁移到新的服务器上. 1.迁移准备工作和思路:从a服务器迁移到b服务器,由于Gitlab自身的兼容性问题,高版本的Gitlab无法恢复低版本备份的数据,需 ...

  10. Babel总结

    什么是babel? babel是一个JavaScript编译器. Babel是一个工具链,主要用于将ECMAScript 2015+代码转换为向后兼容的旧浏览器或环境中JavaScript版本. 注解 ...