日志文件大小限制管理

附录:资料

shell查看目录大小

du -ach #这个能看到当前目录下的所有文件占用磁盘大小和总大小 du -sh #查看当前目录总大小 du -sh #查看所有子目录大小

lsof | grep delete #如果怀疑删掉的数据还在占用磁盘空间试试这个 kill -9 pid #结束掉进程就能释放磁盘空间了

for i in lsof | grep delete | awk '{print $2}'; do kill -9 $i ;done

日志大小轮询使用lograte命令。

#!/bin/bash
#
# 功能:管理日志文件大小
# 时间: 2021/3/10
#

folder_path="/var/log/"
if [ ! -d ${folder_path} ]; then
    exit 1
fi
cd ${folder_path}

# 自UTC时间,当前所经过的秒数
curren_date_second=$(date -d `date +%Y%m%d` +%s)

# 压缩文件夹
folders_name=`ls -l ${folder_path} | awk '/^d/ {print $NF}'`
for folder_name in ${folders_name}
do
    # 将文件夹日期转换为秒数
    date_second=$(date -d ${folder_name} +%s)
    if [ ! -z "${date_second}" ] && [ ${date_second} -lt ${curren_date_second} ]
    then
        tar -zcf ${folder_name}.tar.gz ${folder_name} --remove-files
    fi
done

# 判断文件夹大小是否超过200M
current_size=`du -s ${folder_path} | awk '{print $1}'`
max_size=$((200*1024))
while [ ${current_size} -gt ${max_size} ]
do
    oldest_file_name=`ls -rt | awk 'NR==1'`

    if [ ! -z ${oldest_file_name} ]; then
        rm -rf ${folder_path}${oldest_file_name}
    fi
    current_size=`du -s ${folder_path} | awk '{print $1}'`
done

exit 0

results matching ""

    No results matching ""