linux 日志按日期切割,nginx按日期生成日志 nginx日志切割

nginx的日志文件没有办法按天切割

网上的其他办法:mv文件,然后再重启nginx生成空的日志文件

但这样,还需要重启nginx,总是感觉有点太过周张

新的办法:cp文件,利用/dev/null清空日志文件

1:cp日志文件

2:cat /dev/null > 日志文件

具体代码:

———-

/data/log/:切割日志存放目录

———-

/data/nginx/logs/:为nginx原始日志存放的目录(请根据自己情况修改)

nginx_log_1.log:为需要切割的日志文件(请根据自己情况修改)

———-

1: 每次操作会生成操作日志 /data/log/op-2018_11_23.log

2:切割日志,会按天存放在:/data/log/2018/11/23/

#Create by skyhh 2018-11-23

#变量

#1:操作日志 /data/log/op-2018_11_23.log

fileDate=$(date +"%Y_%m_%d")

logfilePath="/data/log/op-"$fileDate".log"

#2:切割存放目录 /data/log/2018/11/23/

datePath=$(date +"%Y/%m/%d")

fullPath="/data/log/"$datePath

echo $(date +"%Y-%m-%d %H:%M:%S")" 开始切割" >> $logfilePath

#3:判断日志

if [ ! -d $fullPath ];then

mkdir -p $fullPath

else

#日志

echo $(date +"%Y-%m-%d %H:%M:%S")" 文件夹已经存在" >> $logfilePath

fi

#开始文件切割

#1

filename="nginx_log_1.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#有几个需要切割的文件,就写几个

#2

filename="nginx_log_2.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#3

filename="nginx_log_3.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#4

filename="nginx_log_4.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#5

filename="nginx_log_5.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#6

filename="nginx_log_6.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath

cat /dev/null > /data/nginx/logs/$filename

echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

ps:还可以优化,将文件写入一个数组,然后循环

最后:

crontab -e

0 0 * * * /data/log/log.sh

crontab -l

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值