初试手了下bash编程,定期清除日志
由于公司网站的日志文件按天为目录存放,格式如下
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执行下