初试手了下bash编程,定期清除日志

十 21st, 2009

由于公司网站的日志文件按天为目录存放,格式如下
20090901
20090902
……
时间一长,硬盘老暴满,正好前些天看过点shell的知识,应用一下^_^

#!/bin/bash
#日志保留月份数
reserveMonth=2
#需保存的最早一天的日志
oldest=`date -d "-$reserveMonth month" +%Y%m%d`
#日志存放目录
workdir='/home/phpman/test'
#搜索目录
dirs=`ls $workdir -F | grep -P '\d{8}/' | sed 's/.$//'`
for i in $dirs;do
#早于最早那天的,删除
    if test $i -le $oldest
    then
        tmp_dir=${workdir}/$i
#记录此次操作的记录
        echo "Directory '$tmp_dir' deleted at `date '+%Y-%m-%d %H:%M:%S'`" >> ${workdir}/delete.log
        rm -rf $tmp_dir
    fi
done

然后将计划放入crontab
30 1 * * 5 root /root/clean_log.sh
每周六1:30执行下

标签:
目前还没有任何评论.
;) :| :x :twisted: :roll: :oops: :o :mrgreen: :lol: :idea: :evil: :cry: :arrow: :P :D :?: :? :) :( :!: 8O 8)

Spam Protection by WP-SpamFree