一、创建脚本
vim /root/project/nginx_logs_task/cut_nginx_log.sh
# /bin/bash
#function@NGINX日志切割
#日志文件备份个数
number=20
#NGINX日志路径
base_path='/usr/local/nginx/logs'
#NGINX日志备份路径
base_path_back_dir='/usr/local/nginx/logs_back'
#创建目录时间 当天时间 例如:2019-03-14
#log_path=$(date -d yesterday +"%Y%m%d") #该参数是创建前一天数据,如需要当天备份,可使用
log_path=$(date +"%Y%m%d")
#日志创建时间
#date=$(date -d yesterday +"%Y-%m-%d-%H")#该参数是创建前一天数据,如需要当天备份,可使用
date=$(date +"%Y-%m-%d-%H")
#如果文件夹不存在则创建
if [ ! -d $base_path_back_dir ];
then
mkdir -p $base_path_back_dir;
fi
#在NGINX日志备份路径下创建以当天时间命名的目录
mkdir -p $base_path_back_dir/$log_path
#将备份日志
mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log
mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log
mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log
#记录操作日志
echo "mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log" >> $base_path_back_dir/log.txt
echo "mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log" >> $base_path_back_dir/log.txt
echo "mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log" >> $base_path_back_dir/log.txt
#NGINX日志重读
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
#找出需要删除的备份
delfile=`ls -l -crt $base_path_back_dir -F |grep "/$" | awk '{print "/usr/local/nginx/logs_back/" $9}' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l $base_path_back_dir | grep "^d" | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm -rf $delfile
#写删除文件日志
echo "rm -rf $delfile" >> $base_path_back_dir/log.txt
fi
二、制定执行计划
vim /root/project/nginx_logs_task/cut_nginx_log.cron
每天凌晨执行一次
0 0 * * * . /etc/profile;/bin/sh /root/project/nginx_logs_task/cut_nginx_log.sh
三、加入任务
crontab -l
以前有任务执行 crontab -e 编辑
以前没有任务crontab cut_nginx_log.sh