日志快把服务器磁盘占满了?shell定时清除日志(一)

7 篇文章 0 订阅

最近两天突然感觉服务器容量快满了,果不其然。

其中有两台服务器、磁盘占用量比例很高。

 

下面分析大神的脚本。并运行起来,再也不用担心服务器的硬盘被日志占满了。

基本思路是,定时运行可以清除以前某个时间日志的脚本。

项目背景

需要掌握熟悉shell,crontab

日志目录:/www/logs/php

文件名词要求:前缀固定+日期(phplog-2020-10-27.log)

应用程序每天自动创建日志文件

脚本的第一步先得到要删除时间day1日期格式,然后再到日志目录删除日志文件。

 

# 获取时间
#date 显示当前日期  格式为 %Y-%m-%d
[root@zjt-baidu logrotate]# date  +%Y-%m-%d 
2020-10-28


#date -d  -d、 --date=字符串显示由字符串描述的时间,而不是“now”
[root@zjt-baidu logrotate]# date -d "-1 day" +%Y-%m-%d 
2020-10-27
[root@zjt-baidu logrotate]# day=`date -d "-1 day" +%Y-%m-%d`
[root@zjt-baidu logrotate]# echo $day
2020-10-27

#进入目录
# cd /www/log/php
 
# 删除文件  
rm /www/log/php/phplog-2020-10-26.log

#添加 -f 选项 强制删除,不进行交互
rm /www/log/php/phplog-2020-10-26.log



得到下面的clearLog.sh文件的内容

第3行和第4行 调试用,为了保证不误操作,一定先打印出文件名,确认无误后再打开注释,

然后执行。不然删除错误就完蛋了。

  #/bin/bash
   LOGDIR='/www/logs/php'
   DAY=`date -d "-1 day" +%Y-%m-%d`
   echo $DAY 
   cd $LOGDIR
   echo $LOGDIR/phplog-${DAY}.log
   #rm -f $LOGDIR/phplog-${DAY}.log

但上面的shell要求满足应用程序每天可以自动创建新文件。

兼容不能创建新文件的需求

 

DATE=`date -d '1 days ago' "+%Y-%m-%d"`
#不带日期的日志文件   拷贝   为带日期的日志文件
cp /www/logs/phplog.log /www/logs/phplog-$DATE.log
>/www/logs/phplog.log
chown -r www:www /www/logs/phplog.log

最终的清理日志文件,保留15天

   #/bin/bash
   LOGDIR='/www/logs/php'
   DAY=`date -d "-15 day" +%Y-%m-%d`
   echo $DAY 
   cd $LOGDIR
   echo $LOGDIR/phplog-${DAY}.log
   DATE=`date -d '1 days ago' "+%Y-%m-%d"`
    #不带日期的日志文件   拷贝   为带日期的日志文件
    cp /www/logs/phplog.log /www/logs/phplog-$DATE.log
    >/www/logs/phplog.log
    #修改权限
  
   chown -R www:www /www/logs/phplog.log
   rm -f $LOGDIR/phplog-${DAY}.log

如果本文对你有帮助,请转发,说不定你的朋友也需要它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值