路漫漫其修远兮
吾将上下而求索

shell学习:定时删除日志脚本

#!/bin/bash 
# v1
# 脚本位置:/data/script/clean_log.sh
# 添加定时任务:echo "0 * * * * /bin/bash /data/script/clean_log.sh" >> /var/spool/cron/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/k8s/bin
cd $(dirname $0)

func_clean_log(){

[[ -e clean_log.lock ]] && exit 1

echo
echo
echo "$(date +%F_%T) start clean"
touch clean_log.lock


find /var/spool/postfix/maildrop -type f -exec /bin/rm -f {} \;
find /data/applogs/cat -type f -exec /bin/rm -f {} \;


disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
echo "current disk percent: $disk_percent%"


if [[ $disk_percent -gt 50 ]]; then
    #包括gz,txt,log文件
    echo "current disk percent large then 50%, start clean"
    find /home/andblog/runtime/tomcat_8081/logs -type f -mtime +7 -exec /bin/rm -f {} \;
    find /home/andblog/logs -type f -mtime +7 -exec /bin/rm -f {} \;
    find /home/www/*/logs -type f -mtime +7 -exec /bin/rm -f {} \;
    
else 
    disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
    echo "current disk percent: $disk_percent%"
    echo "$(date +%F_%T) stop clean"
    /bin/rm -f clean_log.lock
    exit 0
    
fi


disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
echo "current disk percent: $disk_percent%"


if [[ $disk_percent -gt 80 ]]; then
    #包括gz,txt,log文件
    echo "current disk percent large then 80%, start clean"
    find /home/andblog/runtime/tomcat_8081/logs -type f -mtime +3 -name "*.gz" -exec /bin/rm -f {} \;
    find /home/andblog/runtime/tomcat_8081/logs -type f -mtime +3 | xargs truncate -s 0
    find /home/andblog/logs -type f -mtime +3 -name "*.gz" -exec /bin/rm -f {} \;
    find /home/andblog/logs -type f -mtime +3 | xargs truncate -s 0
    find /home/www/*/logs -type f -mtime +3 -name "*.gz" -exec /bin/rm -f {} \;
    find /home/www/*/logs -type f -mtime +3 | xargs truncate -s 0

else 
    disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
    echo "current disk percent: $disk_percent%"
    echo "$(date +%F_%T) stop clean"
    /bin/rm -f clean_log.lock
    exit 0
    
fi


disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
echo "current disk percent: $disk_percent%"


if [[ $disk_percent -gt 85 ]]; then
    #包括gz,txt,log文件
    echo "current disk percent large then 85%, start clean"
    find /home/andblog/runtime/tomcat_8081/logs -type f -name "*.gz" -exec /bin/rm -f {} \;
    find /home/andblog/runtime/tomcat_8081/logs -type f | xargs truncate -s 0
    find /home/andblog/logs -type f -name "*.gz" -exec /bin/rm -f {} \;
    find /home/andblog/logs -type f | xargs truncate -s 0
    find /home/www/*/logs -type f -name "*.gz" -exec /bin/rm -f {} \;
    find /home/www/*/logs -type f | xargs truncate -s 0
    
fi


disk_percent=$(df -h | egrep [[:space:]]/$ | awk '{print $(NF-1)}' | tr -d '%')
echo "current disk percent: $disk_percent%"
echo "$(date +%F_%T) stop clean"
/bin/rm -f clean_log.lock
exit 0

}

func_clean_log &>> clean_log.log


定时将某个目录下面的所有日志都切割压缩
cd /home/andblog/data/tmp/logs/; for log in $(ls *.log); do cat $log > $log.$(date +\%F).log; > $log; gzip $log.$(date +\%F).log; done
59 23 * * * cd /home/andblog/runtime/tomcat_8081/logs/ ; [ -f  catalina.out ] && ( cat catalina.out > catalina.out.`date +\%F`.log ; > catalina.out; \
gzip catalina.out.`date +\%F`.log )

未经允许不得转载:江哥架构师笔记 » shell学习:定时删除日志脚本

分享到:更多 ()

评论 抢沙发

评论前必须登录!