定时清理服务器日志文件

背景:由于测试环境的磁盘经常满,导致日常测试及日常自动化治理过程中经常出现由于服务器磁盘满了导致调用超时的现象。

思路:

1、查找日志文件大于0M的日志文件

find /export/Instances/express.oms.jdl.cn/server1/logs -name "*.out" -type f -size +0M -print -exec ls -l {} \;

注意项:find -name "*.out" ,引号必须使用双引号

2、将大于0M的日志文件清除为0

方式有两种:

  1. find /export/Instances/express.oms.jdl.cn/server1/logs -name "*.log'"-type f -size +0M -print -exec truncate -s 0 {} \;
  • find /export/Instances/express.oms.jdl.cn/server1/logs -name "*.out'"-type f -size +0M -print -exec truncate -s 0 {} \;
  1. echo > catalina.2022-07-29.log

3、在服务器上生成一个clearlog.sh脚本

创建一个文件:touch clearlog.sh

输入脚本(2种方式):

第一种方式:

status(){

date

find /export/Instances/express.oms.jdl.cn/server1/logs -name "*.out" -type f -size +0M -print -exec truncate -s 0 {} \;

find /export/Instances/express.oms.jdl.cn/server1/logs -name '*.log' -type f -size +0M -print -exec truncate -s 0 {} \;

echo "清除成功"

return

}

case $1 in

status)

status

;;

*)

echo "清除失败"

esac

执行脚本:clearlog.sh status 传一个status参数

第二种方式:

#!/bin/bash

status(){ #定义清除日志的函数

date

find /export/Instances/express.oms.jdl.cn/server1/logs -name "*.out" -type f -size +0M -print -exec truncate -s 0 {} \; #查找大于0M的日志文件、打印出文件并清除文件为0

return 1

}

status

ret=$?

echo $ret

case $ret in

1)

echo "成功"

;;

*)

echo "清除失败"

esac

执行脚本:clearlog.sh

shell脚本 case in的使用方式:Shell case in语句详解

shell脚本函数的使用方式:Shell函数详解(函数定义、函数调用)

4、添加定时任务:

crontab -l 查看添加的任务

crontab -e 添加任务

59 23 * * * /export/Instances/express.oms.jdl.cn/server1/logs/clearlog.sh status >>/export/Instances/express.oms.jdl.cn/server1/logs/clear.txt

59 23 * * * : (分) *(时) *(日) *(月) *(周)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值