一、 Nginx服务的信号控制
1.1.Nginx服务的信号控制
- 调用命令为 kill -signal PID signal:即为信号;
- PID即为获取到的master线程ID
1、 发送TERM/INT信号给master进程,会将Nginx服务立即关闭。
kill -TERM PID / kill -TERM `cat /usr/local/nginx/logs/nginx.pid`
kill -INT PID / kill -INT `cat /usr/local/nginx/logs/nginx.pid`
2、 发送QUIT信号给master进程,master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,在把进程都关闭掉。
kill -QUIT PID / kill -QUIT `cat /usr/local/nginx/logs/nginx.pid`
3、发送HUP信号给master进程,然后根据nginx的配置文件重新启动新的work进程 ,master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,处理完后结束进程(-s reload)
kill -HUP PID / kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
4、 发送USR1信号给master进程,告诉Nginx重新开启日志文件
kill -USR1 PID / kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
5、发送USR2信号给master进程,告诉master进程要平滑升级,这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在 /usr/local/nginx/logs/nginx.pid 而之前的旧的master进程PID会被记录在 /usr/local/nginx/logs/nginx.pid.oldbin 文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭。
kill -USR2 PID / kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT PID / kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
6、发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了,请求处理完后关闭work进程。注意master进程不会被关闭掉。
kill -WINCH PID /kill -WINCH`cat /usr/local/nginx/logs/nginx.pid`
二、Nginx日志切割
1.Nginx日志
日志对于统计排错来说是非常有利的,Nginx日志主要分为两种:
access_log(访问日志)和error_log(错误日志),通过访问日志可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。错误日志记录了访问出错的信息。
2.脚本切割日志
[root@web nginx-1.18.0]# cat sbin/cut_my_log.sh
#!/bin/bash
#nginx日志所在的目录
LOG_PATH=/usr/local/nginx-1.18.0/logs
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d)
PID=`cat /usr/local/nginx-1.18.0/logs/nginx.pid`
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 ${PID}
3.设置计划任务
[root@web nginx-1.18.0]# crontab -l
##每天的0点0分执行切割脚本
0 0 * * * /bin/bash /usr/local/nginx-1.18.0/sbin/cut_my_log.sh