shell定时清除linux中的日志文件

2020-08-07  本文已影响0人  cutieagain

什么时候需要清除

磁盘空间容量大于80的时候删除日志文件

新建可执行文件

cd /opt
mkdir clearlogs
cd clearlogs/
vim clearlogs.sh
#授权操作写读
chmod 777 clearlogs.sh

shell删除日志文件内容

#!/bin/bash
logDataPath='/root/logs/daily/' #日志存放目录

#遍历目录查看日志信息
#for file in `find ${logDataPath} -name "*.log.*"`

#15天以上的日志进行清除
expireTime=15
deletefiles() {
    local currentDate=$(date "+%s")
    echo "current date is:" $currentDate

    local diskUseRate=$(df -h | grep /dev/vda1 | awk '{print $5}' | tr -d %)
    echo "diskUseRate is:" $diskUseRate
    if [[ $diskUseRate -gt 80 ]]; then
        echo "diskUseRate gt 80"
        echo "clear /opt/jstatd/jstatd.log start"
        echo "" >/opt/jstatd/jstatd.log
        echo "clear /opt/jstatd/jstatd.log end"
        for file in $(find $1 -name "*.log.*"); do
            local name=$file
            local modifyDate=$(stat -c %Y $file)
            local existTime=$(($currentDate - $modifyDate))
            existTime=$(($existTime / 86400))
            #echo "existTime date is:" $existTime

            if [[ $existTime -gt $expireTime ]]; then
                echo "file:" $name + "modifyDate:" $modifyDate + "exist time:" $existTime + "deleted"
                rm -rf $file
            else
                echo "file:" $name + "modifyDate:" $modifyDate + "exist time:" $existTime + "not deleted"
            fi
        done
    else
        echo "diskUseRate lt 80"
    fi
}
deletefiles $logDataPath



cron定时磁盘清理执行任务

# 查看crontab服务状态
service crond status
#查看定时任务列表
crontab -l
#编辑定时任务
crontab -e
#每小时执行一次
* */1 * * * /opt/clearlogs/clearlogs.sh

补充内容

1、linux的corn表达式只能从分开始
2、注意`和‘的区别
3、vim文本tab长度导致查看不方便解决:

cd ~
touch .exrc
vi .exrc

写入:
set nu
set tabstop=4
上一篇下一篇

猜你喜欢

热点阅读