一、信号控制
Nginx在运行时,会保持一个主进程和多个worker process工作进程,给主进程发送信号就可以控制服务器的启停操作
首先要知道主进程的进程号PID,获取pid有2种途径
1、Nginx服务启动后,默认在安装目录下logs目录产生一个nginx.pid的文件,该文件保存了服务主进程的PID
[root@node-a nginx]# cd logs/ [root@node-a logs]# ll total 13236 -rw-r--r-- 1 root root 8662965 Dec 24 09:49 access.log -rw-r--r-- 1 root root 4876922 Dec 24 05:21 error.log -rw-r--r-- 1 root root 5 Nov 11 15:17 nginx.pid [root@node-a logs]# cat nginx.pid 8374 [root@node-a logs]# pwd /usr/local/nginx/logs
2、通过ps -ef|grep nginx 查看主进程的PID
ps -ef | grep nginx
[root@node-a logs]# ps -ef | grep nginx root 8374 1 0 Nov11 ? 00:00:00 nginx: master process nginx nobody 16916 8374 0 Dec22 ? 00:00:00 nginx: worker process root 19583 19514 0 10:06 pts/0 00:00:00 grep --color=auto nginx
可以看出PID进程号为8374
二、信号处理
TERM或INT 快速停止Nginx服务 QUIT 平缓停止Nginx服务 HUP 使用新的配置文件启动进程,之后平缓停止原有进程,称为平滑启动 USR1 重新打开日志文件,常用于日志切割 USR2 使用新版本的Nginx文件启动服务,之后平缓停止原有的Nginx进程,平滑升级 WINCH 平缓停止worker process 用于Nginx服务器平滑升级
向Nginx服务主进程发送信号的2种方式:
1、使用Nginx二进制文件
2、使用kill命令发送信号
kill SIGNAL PID
SIGNAL 指定信号的值
PID 指定服务主进程的PID,也可以使用nginx.pid动态获取PID号
kill SIGNAL `filepath`
filepath 表示nginx.pid的路径
三、Nginx服务的启动
linux平台下,启动nginx服务器直接运行安装目录下的sbin命令二进制即可
# ./sbin/nginx -h
# ./nginx -V
-v用来显示Nginx服务器的版本号; -V除了显示版本号,还显示Nginx服务器编译情况 -t 检查Nginx服务器配置文件是否有语法错误 -c 使输出内容更详细,这对查找配置文件中的语法错误很有帮助 -q与-t联用 "-s signal"用来向Nginx服务的主进程发送信号 "-p prefix"用来改变Nginx的安装路径,常用在平滑升级Nginx服务器的场合 "-c filename"用来指定启动Nginx服务使用的配置文件 "-g directives"用来补充Nginx配置文件,向Nginx服务指定启动时应用于全局的配置
启动Nginx:
# ./sbin/nginx
使用ps -ef | grep nginx命令查看Nginx服务的进程状态
Nginx停止:
发送信号
# ./sbin/nginx -g TERM | INT | QUIT
TERM和INT信号用于快速停止,QUIT用于平缓停止
或者
# kill TERM | INT | QUIT `/nginx/log/nginx.pid`
也可以使用kill命令向Nginx进程发送-9或者SIGKILL信号强制关闭Nginx服务(不建议)
# kill -9 | SIGKILL `/nginx/log/nginx.pid`
Nginx重启:
平滑重启
# ./sbin/nginx -g HUP [-c newConfile]
HUP信号用于发送平滑重启信号
newConfFile,可选项,用于指定新配置文件的路径
或者
使用新的配置文件代替了旧的配置文件后
# kill HUP `/nginx/log/nginx.pid`