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