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

服务器中产生的日志有时会占满硬盘空间,因此需要定时对其清除。下面写了个脚本,实现删除上一个月的日志。
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分钟执行一次

update 20160608
上面的获取前一个月的逻辑写了这么多,其实只需要一行就可以搞定:

date -d "-1 month" "+%Y-%m-%d"

这里写图片描述

获取前一天,前一年类似:

date -d "-1 day" "+%Y-%m-%d"
date -d "-1 month" "+%Y-%m"
date -d "-1 year" "+%Y"

这里写图片描述

获取当前时间1小时之前的时间:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值