常用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

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