常用shell脚本 tomcat监控/mysql备份/jar文件启动停止重启 等等

常用shell脚本

1. tomcat监控 自动重启 注意tomcat路径要根据实际情况更改

#!/bin/sh
# 获取tomcat进程ID 注意tomcat路径要根据实际情况更改
TomcatID=$(ps -ef |grep '/root/tomcat/bin'|grep -v 'grep'| awk '{print $2}')
# tomcat启动程序 注意tomcat路径要根据实际情况更改
StartTomcat=/root/tomcat/bin/startup.sh
# 定义要监控的页面地址 
WebUrl=http://localhost:8080
# 日志输出
TomcatMonitorLog=/root/logs/tomcatMonitor.log
# 监控方法主体
Monitor()
    {
        echo "[start]---[$(date +'%F %H:%M:%S')]---"
        if test $TomcatID ;then #这里判断Tomcat进程是否存在
            # 检测是否启动成功(成功的话页面会返回状态"200")
            TomcatServiceCode=$(curl -s -m 1000 --connect-timeout 1000 $WebUrl -w %{http_code})
            if [[ $TomcatServiceCode -eq 200 || $TomcatServiceCode -eq 000 ]];then  
                echo "[success]tomcatid:$TomcatID,code:$TomcatServiceCode"
            else
                echo "[error]tomcat页面出错,状态码为$TomcatServiceCode"
                echo "[error]页面访问出错,开始重启tomcat"
                kill -9 $TomcatID # 杀掉原tomcat进程
                sleep 5
                #rm -rf $TomcatCache # 清理tomcat缓存
                $StartTomcat
            fi
        else
            echo "[error]tomcat进程不存在"
            echo "[info]$StartTomcat 启动中"
            #rm -rf $TomcatCache
            $StartTomcat
        fi
        echo "[end]---[$(date +'%F %H:%M:%S')]---"
    }
# 清理日志文件方法
cleanLog()
    {
        if ! [ -f $TomcatMonitorLog ];then
            echo "file not exist!"
            exit 1
        fi
        # 大于10M 自动清空日志文件
        if test `ls -l $TomcatMonitorLog|awk '{print $5}'` -gt $((1024 * 1024 * 10)) 
        then
            echo "[clean]---[$(date +'%F %H:%M:%S')]---" > $TomcatMonitorLog # 清空
        fi
    }
# 超过10M清空日志
cleanLog
# 执行监控脚本
Monitor >> $TomcatMonitorLog

2. MySql定期自动备份 需要先配置账号密码到my.cnf中

#!/bin/bash
# mysql 自动备份、压缩、加密
# 文件名为 database_日期
backupDatabase=database

# 代表数据库名_年月日 也可以根据需要修改 %Y%m%d%H%M%S
fileName=${backupDatabase}_`date +%Y%m%d`

# 存放备份的目录,可以是任意位置,先创建并赋权
baseDir=/root/backup/files/mysql/${backupDatabase}/

# 备份数据库
mysqldump --defaults-extra-file=/etc/my.cnf ${backupDatabase} > ${baseDir}${fileName}.sql

# 加密压缩 大写P 必须填入你自己想的压缩密码,解压时需要用到
tar -zcPvf - ${baseDir}${fileName}.sql | openssl des3 -salt -k 你的自定义的压缩文件密码 -out ${baseDir}${fileName}.sql.tar.gz 

# 删除刚刚备份的sql文件,留下压缩的
rm -f ${baseDir}${fileName}.sql;

# 删除90天前备份的数据
find ${baseDir} -mtime +90 -name "${backupDatabase}*.tar.gz" -exec rm -rf {} \;

3. 启动/停止/重启 Jar文件的应用 xxx改为你的项目路径或文件名
启动

#!/bin/bash
# 启动脚本,nohup方式后台运行jar包,其中参数需要根据实际情况调敿# 参数说明如下
# -Xms128m    JVM初始分配的堆内存
# -Xmx1024m    JVM最大允许分配的堆内孪# /root/java/xxx-1.0.0.jar
# --spring.profiles.active=prod    运行application-prod.properties
# > logs/api.out    实时输出控制台信息到指定文件
nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out &

停止

#!/bin/bash
# 停止脚本,其中 xxx-1.0.0.jar 需要替换成实际文件名,而且尽量确保名字唯一性,防止错杀
xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}')
# run
# 判断进程是否存在
if test $xxxID ;then
    # 杀死进程
    kill -9 $xxxID
    echo "[SUCCESS] 进程已杀死"
else
    # 提示不进程不存在
    echo "[ERROR] 进程不存在"
fi

重启

#!/bin/bash
# 重启脚本,实际上就是结合了前面2个脚本
xxxID=$(ps -ef |grep 'xxx-1.0.0.jar'|grep -v 'grep'| awk '{print $2}')
# run
# 判断进程是否存在
if test $xxxID ;then
    # 杀死进程
    kill -9 $xxxID
    echo "[SUCCESS] 进程已杀死"
else
    # 提示不进程不存在
    echo "[ERROR] 进程不存在"
fi
sleep 5
nohup java -jar -Xms128m -Xmx1024m /root/web/java/xxx/xxx-1.0.0.jar --spring.profiles.active=prod > logs/xxx.out &

END

本文同时也会发布在我的个人博客
https://zzzmh.cn/single?id=70

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章