背景:由于测试环境的磁盘经常满,导致日常测试及日常自动化治理过程中经常出现由于服务器磁盘满了导致调用超时的现象。
思路:
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
方式有两种:
- 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 {} \;
- 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 * * * : (分) *(时) *(日) *(月) *(周)