linux定時任務監控tomcat狀態
阿新 • • 發佈:2019-02-10
最近入了VPS,由於記憶體過小,tomcat程序經常被KILL掉,在百度之後發現可以寫一個指令碼來監控tomcat狀態,當tomcat掛掉時,自動啟動tomcat,並啟用定時任務來執行它。
#下面是shell指令碼
#!/bin/sh # function:自動監控tomcat程序,掛了就執行重啟操作 # 獲取tomcat PPID TomcatID=$(ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}') # tomcat_startup StartTomcat=/usr/local/tomcat/tomcat7/bin/startup.sh #TomcatCache=/usr/local/tomcat/tomcat7/work # 定義要監控的頁面地址 WebUrl=http://lazyrabbit.tech/ # 日誌輸出 GetPageInfo=/dev/null TomcatMonitorLog=/tmp/TomcatMonitor.log Monitor() { echo "[info]開始監控tomcat...[$(date +'%F %H:%M:%S')]" if [ "$TomcatID" ];then echo "[info]tomcat程序ID為:$TomcatID." # 獲取返回狀態碼 TomcatServiceCode=$(curl -s -o /dev/null --connect-timeout 10 -m 20 $WebUrl -w %{http_code}) if [ $TomcatServiceCode -eq 200 ];then echo "[info]返回碼為$TomcatServiceCode,tomcat啟動成功,頁面正常." else echo "[error]訪問出錯,狀態碼為$TomcatServiceCode,錯誤日誌已輸出到$GetPageInfo" echo "[error]開始重啟tomcat" kill -9 $TomcatID # 殺掉原tomcat程序 sleep 3 #rm -rf $TomcatCache # 清理tomcat快取 $StartTomcat fi else echo "[error]程序不存在!tomcat自動重啟..." echo "[info]$StartTomcat,請稍候......" #rm -rf $TomcatCache $StartTomcat fi echo "------------------------------" } Monitor>>$TomcatMonitorLog
其中tomcat_startup 是tomcat啟動指令碼的路徑,WebUrl是要監控的頁面地址,使用時只需要修改它們就可以。
獲取tomcat執行狀態的命令
ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}'
訪問頁面返回狀態碼的命令
curl -s -o /dev/null --connect-timeout 10 -m 20 http://lazyrabbit.tech -w %{http_code}
#接下來設定定時任務
新增定時任務,每五分鐘執行一次
crontab -e
*/5 * * * * /usr/local/tomcat/monitor.sh
檢視定時任務
crontab -l
#可能出現的問題
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this programtomcat啟動沒有找到jdk環境,需要在tomcat/bin路徑下的setclasspath.sh檔案中配置jdk路徑
export JAVA_HOME=/usr/local/java/jdk8
export JRE_HOME=/usr/local/java/jdk8/jre
/usr/local/tomcat/monitor.sh: Permission denied
這個指令碼沒有許可權,需要設定許可權
chmod 777 monitor.sh