中间件日志切割
nginx日志切割
nginx日志分割分为以下几步
1、获取当前时间
2、获取nginx日志存放位置
3、判断nginx存放目录是否存在
4、移动原nginx日志位置到保存的目录并显示保存的时间
5、发送user1信号让master主进程生成新日志
[root@web nginx]# vim nginx_log.sh
#!/bin/bash
#nginx_log.sh
datetime=$(date -d "-1 day" "+%Y%m%d") #时间,date -d "-1 day"代表日期减1
log_path="/usr/local/nginx/logs" #日志的存放位置
pid_path="/usr/local/nginx/logs/nginx.pid" #进程的PID号,有PID号代表 进程还活着
[ -d $log_path/backup ] || mkdir -p $log_path/backup #如果$log_path/backup不是一个目录则创建$log_path/backup目录
if [ -f $pid_path ] #如果$pid_path是一个文件
then
mv $log_path/access.log $log_path/backup/access.log-$datetime #那么移动旧日志的文件到新目录下以此来实现分割
kill -USR1 $(cat $pid_path) #USR1代表信号,他会给进程传一个信号让进程生成一个新的日志
find $log_path/backup -mtime +30 | xargs rm -f #查找30天前的日志并删除
else
echo "Error,Nginx is not working!" | tee -a /var/log/messages #否则提示nginx is not working且追加到日志中
fi
给脚本添加权限。让脚本有权限执行
[root@localhost nginx]# chmod +x nginx_log.sh
定时备份
[root@web nginx]# crontab -e
*/1 * * * * bash /usr/local/nginx/nginx_log.sh #每分钟都执行一次
查看切割结果
[root@web nginx]# cd logs/
[root@web logs]# ls
access.log backup error.log host.access.log nginx.pid
[root@web logs]# cd backup/
[root@web backup]# ls
access.log-20200319
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------