前言
最近接了個需求:java服務例外崩潰自啟,
我在想這個需求是否合理,為什么不保證服務高可用,而是等服務掛了重啟它,在這個程序中還是會有請求進不來,資料會丟失,算了,懶得跟需求方爭辯(怕打起來),還是先暫時解決問題,
一、準備腳本
#!/bin/sh
#切換到目錄
cd /usr/local/app
date=`date`
#查詢埠占用
lsof -i:8080
# $? -ne 0 不存在 $? -eq 0存在
if [ $? -ne 0 ]
then
nohup java -jar xxx.jar >/dev/null 2>&1 &
echo $date ":=============== restart ===============" >> monitoring.log
else
echo $date ":=============== is normal ==============" >> monitoring.log
fi
這個腳本比較簡單,判斷埠是否被占用,如果占用就啟動java程式,
二、添加定時任務
Linux crontab 命令
Linux crontab是用來定期執行程式的命令,
當安裝完成作業系統之后,默認便會啟動此任務調度命令,
添加或更新crontab命令
crontab -e
追加一條命令
每分鐘執行腳本檔案
* * * * * . /etc/profile;/bin/sh /usr/local/app/monitoring.sh
重啟crond
service crond restart
查看當前系統登錄用戶的Crontab命令集合
crontab -l
ps:如果我們使用 crontab 來定時執行腳本,無法執行,但是如果直接通過命令(如:./test.sh)又可以正常執行,這主要是因為無法讀取環境變數的原因,
解決:在 crontab 中添加環境變數,在可執行命令之前添加命令 . /etc/profile;/bin/sh,使得環境變數生效
Linux crontab 詳解見:https://www.runoob.com/linux/linux-comm-crontab.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225940.html
標籤:其他
下一篇:HAProxy負載平衡集群
