永中在线编辑3.3版本-自动清理日志脚本

前言

        如果使用集群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

祁八斤 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祁八斤。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值