shell脚本:定期删除日志文件
2015-10-30 18:13
871 查看
服务器中产生的日志有时会占满硬盘空间,因此需要定时对其清除。下面写了个脚本,实现删除上一个月的日志。
1.代码
解释:
grep -oP
-o:只显示满足正则表达式的部分(-o, –only-matching show only the part of a line matching PATTERN)
-P:PATTERN 是一个 Perl 正则表达式
2.定时执行
比如:每10分钟执行一次
crontab -e
解释:
前5个*分别表示,分钟 小时(24制) 日 月 年
*/10 * * * *表示每10分钟执行一次
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分钟执行一次
相关文章推荐
- ubuntu 14.04 用 shell 方便安装nginx
- 【鸟哥的linux私房菜-学习笔记】Bash shell的变量功能及操作环境
- git Bash常用命令
- java实现shell命令--小程序(通过Runtime和Process实现)
- shell 脚本完成对日志文件的提取之grep 学习
- linux shell小功能备忘
- Linux shell 之 提取文件名和目录名的一些方法
- shell里的条件判断方式
- linux笔记 第四天 Linux文件权限、bash特性及文本处理工具grep的用法
- linux shell if 参数
- shell杂记
- shell杂记
- linux shell 创建序列数组(list,array)方法
- Xshell界面输出中文乱码现象解决方法
- Linux的shell
- shell 执行expect
- shell技巧
- shell技巧
- shell 脚本完成对日志文件的提取
- shell命令getopts