前言
如果使用集群WebOffice的话,用户量还比较庞大,那么日志的产生会极大的占用系统资源。现根据大型项目(46台ECS集群)的应用场景编写了,该自动清理日志的脚本(该脚本3.3版本可通用)保证资源的充足性,防止资源告警!
1、使用脚本前,先阅读以下内容
1、# 该脚本主要是IP,如果是内网环境,IP不需要更改,可以先获取IP看看,该脚本IP都是引用的当前机器的IP
2、# 查看本机IP,该脚本引用的是eth0的IP,确保获取的准确性
3、# 查看一下部署的logs内的名称,一般路径为(/实际目录/logs)
2、不废话,直接上脚本
#! /bin/bash # Author: # qibajin # Program: # This Is A Logs Clear Script # History: # 2024/09/29 Qibajin Fourth Time Version Tel:001 # 获取本机IP ip=`ifconfig eth0 | grep "inet" | awk '{print $2}'` # 获取当前时间 time=`date +%y%m%d` # 查找wo的安装目录 wo_path=`ps -ef|grep weboffice | awk -F'/' '{print "/" $3 "/" $9}' | head -n 1` # 输出服务器IP echo "---------------------------------------------------------------------" echo -e "当前服务器IP:""\e[34m" $ip "\e[0m" echo "---------------------------------------------------------------------" # 定义agent目录路径 agentLog="$wo_path"/agent # 定义ssTemp日志目录路径 ssDir=( "$wo_path"/logs/"$ip"\;18081\;19941/ssTemp "$wo_path"/logs/"$ip"\;18082\;19942/ssTemp "$wo_path"/logs/"$ip"\;18083\;19943/ssTemp "$wo_path"/logs/"$ip"\;18084\;19944/ssTemp ) echo -e "\e[34m 正在清理ssTemp ====>> 临时文件!\e[0m" # 遍历删除文件夹日志 for ssDir in "${ssDir[@]}"; do if [ -d "$ssDir" ]; then # 检查目录是否存在 if [ "$(ls -A "$ssDir")" ]; then # 检查目录是否为空 # 进入目录删除日志 cd "$ssDir" rm -rf * echo -e "\e[32m已删除目录 $ssDir 内的所有日志文件\e[0m" echo "---------------------------------------------------------------------" else echo echo -e "\e[32m目录 $ssDir 内没有日志\e[0m" echo "---------------------------------------------------------------------" fi else echo -e "\e[32m目录 $ssDir 不存在\e[0m" echo "---------------------------------------------------------------------" fi done # 定义logs日志目录路径 logDir=( "$wo_path"/logs/"$ip"\;18081\;19941/ "$wo_path"/logs/"$ip"\;18082\;19942/ "$wo_path"/logs/"$ip"\;18083\;19943/ "$wo_path"/logs/"$ip"\;18084\;19944/ ) echo -e "正在清理logs ====>> 日志文件!" echo "---------------------------------------------------------------------" for logDir in "${logDir[@]}"; do # 清理日志文件,排除当天,eioLog,black_pot日志 find "$logDir/" -mindepth 1 -type d ! -name "logs$time" ! -name "eioLog" ! -name "black_pot" -exec rm -rf {} + echo -e ""$logDir" ====>> 清理完成!" echo "---------------------------------------------------------------------" done echo -e "\e[34m 正在清理agent ====>> 日志文件!\e[0m" echo "Clear Ok" > "$agentLog"/nohup.out echo "---------------------------------------------------------------------" echo -e "\e[32m"$agentLog/nohup.out"日志文件 ====>> 清理完成!\e[0m" echo "---------------------------------------------------------------------" # 查询agent日志的大小,确认是否清理成功! echo -e "\e[34m "nohupSize:"`du -sh "$agentLog"/nohup.out` \e[0m" echo "---------------------------------------------------------------------" # 查看清理日志后的资源 df -h # echo -e "执行完毕"
3、设置定时任务
[root@aliyun logs]# crontab -e
# 定时任务 设置样例
*/1 * * * * service mysqld restart //每隔1分钟执行一次
*/10 * * * * service mysqld restart //每隔10分钟执行一次
0 */1 * * * service mysqld restart //每1小时执行一次
0 */2 * * * service mysqld restart //每2小时执行一次
0 10 * * * service mysqld restart //每天10点执行
30 19 * * * service mysqld restart //每天19点30分执行
0 10 1 10 * service mysqld restart //每年的10月1日10点执行
0 20 8 8 * service mysqld restart //每年的8月8日20点执行
[root@aliyun logs]# #查看定时任务是否设置成功
[root@aliyun logs]# crontab -l
*/10 * * * * /opt/shell/buff.sh >> /opt/buff.log
0 23 * * * /opt/yozowo/logs/clearLog.sh
请各路大佬多多指教!
有任何问题,请留言或私信!
听取意见建议,优化文章质量!!!
2024年09月29日 16:20
祁八斤