您的位置:首页 > 运维架构 > Shell

shell脚本:定期删除日志文件

2015-10-30 18:13 871 查看
服务器中产生的日志有时会占满硬盘空间,因此需要定时对其清除。下面写了个脚本,实现删除上一个月的日志。

1.代码

#!/bin/bash

yy=`date +%Y`   #获取年
mm=`date +%m`   #获取月,如果是9月,得到的是09;如果是10月得到的是10
#mm=1
#echo ${mm}
if [ ${mm} -eq 1 ]   #如果是1月份,其前一月是前一年的12月份
then
preYY=$(($yy-1))
preMM=12;
else
preYY=${yy}
#preMM=$((${mm}-1))
preMM=`expr $mm - 1`  #由于有时是09,所以做减法必须要这么写,但是得到的结果却是8
fi
preMM=`printf %02d ${preMM}`  #由于上一步有可能得到一位数,所以需要前面补0,如08
#echo ${preYY} ${preMM}
#df -h
#文件系统        容量  已用  可用 已用% 挂载点
#/dev/sda5        46G   25G   19G   58% /
#none            4.0K     0  4.0K    0% /sys/fs/cgroup
#udev            1.9G  4.0K  1.9G    1% /dev
#tmpfs           385M  1.5M  383M    1% /run
#none            5.0M     0  5.0M    0% /run/lock
#none            1.9G  976K  1.9G    1% /run/shm
#none            100M   32K  100M    1% /run/user
#下面这一句,得到第5列第2行中的58%的58
percent=`df -h | awk '{print $5}' | head -2 | tail | grep -oP '\d+'`
echo ${percent}
if [ ${percent} -gt 80 ]
then
#echo "大于80%"
rm -rf /home/fan/shell/localhost_access_log.${preYY}-${preMM}*
fi


解释:

grep -oP

-o:只显示满足正则表达式的部分(-o, –only-matching show only the part of a line matching PATTERN)

-P:PATTERN 是一个 Perl 正则表达式

2.定时执行

比如:每10分钟执行一次

crontab -e

*/10 * * * * sh /path/to/cleanDisk.sh


解释:

前5个*分别表示,分钟 小时(24制) 日 月 年

*/10 * * * *表示每10分钟执行一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: