• linux定时压缩历史日志文件实现方式--shell脚本


    1、tools目录文件结构

    [root@www tools]# tree tools/
    tools/
    ├── bin
    │   └── gzip_history_files
    └── etc
        └── gzip_history_files.cfg
    
    2 directories, 2 files
    

    2、压缩历史文件脚本 gzip_history_files

    [root@www tools]# more tools/bin/gzip_history_files 
    #!/bin/sh
    
    # 压缩指定目录下,文件时间早于指定时间节点的文件,时间粒度:小时
    # 配置文件格式 :  需压缩的目录=小时数
    #
    #
    # define restricted path
    PATH="/bin:/usr/bin:/sbin:/usr/sbin"
    
    # adirname - return absolute dirname of given file
    adirname() { odir=`pwd`; cd `dirname $1`; pwd; cd "${odir}"; }
    
    
    # ---------
    # constants
    # ---------
    MYNAM=`basename "$0"`
    MYDIR=`adirname "$0"`
    MYCFG="${MYDIR}/../etc/${MYNAM}.cfg"
    MYTMP="${MYDIR}/../tmp"
    MYLCK="${MYTMP}/${MYNAM}.lock"
    
    # perform some locking (as good as it gets in a shell)
    [ -s "${MYLCK}" ] && kill -0 `cat "${MYLCK}"` 2>/dev/null &&
            die "${MYNAM}: already running!"
    echo "$$" > "${MYLCK}"
    
    PATHS=(`cat ${MYCFG}`)
    for PP in ${PATHS[@]}
    do
    	APP_PATH=`echo ${PP} | awk -F'=' '{print $1}'`
    	N=`echo ${PP} | awk -F'=' '{print $2}'`
            if [ -d ${APP_PATH} ] ; then
    		T=`/bin/date --date "${N} hours ago" "+%Y%m%d%H%M"`
    		TMP_FILE="/tmp/`echo ${PP} | md5sum | awk '{print $1}'`"
    		touch -t ${T} ${TMP_FILE}
                    find ${APP_PATH} ! -newer ${TMP_FILE} -type f ! -name '*.gz' | xargs gzip > /dev/null 2> /dev/null
            fi
    done
    
    rm -rf ${MYLCK}
    

    3、压缩历史文件脚本配置文件gzip_history_files.cfg 

    [root@www tools]# more tools/etc/gzip_history_files.cfg 
    #需压缩的目录=小时数
    /home/logs/nginx=72
    /home/logs/varnish=72
    

    4、配置计划任务

    [root@www tools]# more /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    
    # gzip old logs
    03 05 * * * root /home/tools/bin/gzip_history_files

    以上会每天5点03分压缩配置文件目录中的3天前的文件。

  • 相关阅读:
    像asp.net Mvc一样开发nodejs+express Mvc站点
    js数组方法大全
    自己的时间规划
    7月暑假生活总结
    01. What Is Discrete Mathematics(中英字幕 by Ocean-藏心)
    找工作专题---二分查找
    angular.js 入门基础
    WCF实例管理
    是技术牛人,如何拿到国内IT巨头的Offer
    python
  • 原文地址:https://www.cnblogs.com/xzlive/p/12928873.html
Copyright © 2020-2023  润新知