一、NGINX的信号量
1、官网信号量链接地址
https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/
2、NGINX的进程说明
一般在nginx启动之后会有一个 master process(主进程)和多个worker process(工作进程)
- 主进程不参与处理用户发来的请求,而是来管理和控制工作进程的,当一个工作进程响应完毕后,主进程会调度工作进程处理下一个请求
- 工作进程是处理用户发来的请求的进程。
3、信号量说明
名称 | 功能说明 |
TERM, INT | Quick shutdown (强制关闭) |
QUIT | Graceful shutdown (优雅关闭,会在请求处理完成之后,自动关闭) |
KILL | Halts a stubborn process |
HUP | Configuration reload (优雅的重新加载配置文件,如果修改完配置文件,需要重启的话,可以使用这个信号量,使用该信号量重启并不会关闭进程和中断请求) Start the new worker processes with a new configuration Gracefully shutdown the old worker processes |
USR1 | Reopen the log files (重写一个日志文件) |
USR2 | Upgrade Executable on the fly (升级执行文件) |
WINCH | Gracefully shutdown the worker processes (优雅的关闭工作进程) |
4、信号量的使用
kill -信号量 nginx的主进程的pid
例如:
kill -HUP 4623
优雅的加载配置文件
二、NGINX的日志切割实现
使用信号量 USR1 Reopen the log files (重写一个日志文件)
#!/usr/bin/env bash
fDate=$(date -d "1 day ago" +%Y-%m-%d)
Files=`ls /data/log/nginx/ |grep .log$`
mkdir -p /data/tmplog/{{ ansible_hostname }}-"$fDate"
for i in $Files
do
cd /data/log/nginx/
mv $i /data/tmplog/{{ ansible_hostname }}-"$fDate"/$i
done
chmod 775 -R /data/log/nginx/
[ -f /var/run/{{ ansible_hostname }}.pid ] && kill -USR1 `cat /var/run/{{ ansible_hostname }}.pid`
cd /data/tmplog/
tar fzcv {{ ansible_nodename }}."$fDate".tar.gz {{ ansible_hostname }}-"$fDate"
rsync {{ ansible_nodename }}."$fDate".tar.gz root@bak.ops.com::logbacknginx
sudo find /data/tmplog/ -mtime +3 -name '*' -exec rm