zoukankan      html  css  js  c++  java
  • 一个可自动备份及清理系统日志的Shell脚本

    由于是个人电脑,每天都要不定时的开关机~所以,就不使用cron了~
    这个脚本默认在每个月的最后一天或者/var/log/目录大小超过100MB时执行备份及清理日志~
    (可根据自己的实际情况放在~/.bashrc或~/.bash_profile文件中执行,也可以放在开关机服务中运行,但由于此时的$HOME为空,所以日志会备份到/BackupLog/目录下)
    补充一点:由于此脚本要对/var/log/目录下的所有目录及文件进行读写操作,所以要正常运行此脚本需要root权限。非root用户可以使用sudo。


    #!/bin/sh
    function backup_log() {
    printf "/nBackuping System Log ... ..."
    Year=`date +%Y`
    Month=`date +%m`
    mkdir -p $HOME/BackupLog/$Year/$Month
    DEST=$HOME/BackupLog/$Year/$Month/`date +%Y%m%d_%H%M%S`.tar.gz
    tar zcf $DEST /var/log/ 2> /dev/null
    }

    function check_dir() {
    dir=`ls -l $1 | grep "^d" | grep -v 'lost+found$' | gawk '{print $NF}' | sed -e :x -e 'N;s//n/ /g;tx'`

    for DIR in $dir
    do
    clear "$1$DIR/"
    check_dir "$1$DIR/"
    done
    }

    function clear() {
    old=`ls -l $1 |grep '/.old$' | gawk '{print $NF}'`
    if [ ! -z "$old" ] ; then
    rm -f $1*.old
    fi
    link=(`ls -l $1 | grep "^-" | gawk '{print $NF}' | sed -e :a -e 'N;s//n/ /;ta'`)
    for log in ${link[*]}
    do
    sed 's/.*//' $1$log > $1$log
    done
    }

    function clean_log() {
    printf "/nCleaning System Log ... .../n"
    clear $1
    check_dir $1
    }

    tomorrow=`date +%e -d tomorrow`
    space=`du -s /var/log/ | gawk '{print $1}'`
    if (( $tomorrow == 1 && $space > 5120 )) || [ $space -gt 102400 ] ; then
    amount=`echo $space | gawk '{printf "%.2f",$1/1024}'`
    printf ""The /var/log/ directory uses $amount MB disk space./nDo you want to archive the system log? [y/n] "
    read -n 1 input
    case $input in
    y | Y)
    backup_log
    ;;
    esac
    clean_log "/var/log/"
    fi

  • 相关阅读:
    JavaScript 进阶篇的学习~
    JavaScript 基础的复习~
    JVM字节码解析
    Tomcat压力测试与优化方案
    Tomcat优化
    JVM垃圾收集器
    JVM的垃圾回收机制(GC)
    JVisual VM工具使用
    jstack监控JVM线程的运行情况
    监控JVM内存使用情况
  • 原文地址:https://www.cnblogs.com/axon/p/13707858.html
Copyright © 2011-2022 走看看