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