- 編寫腳本
vim /opt/listen/listen_pushdemo.sh
#!/bin/sh
# 必須配置,引入環境變量;不然使用crond 定時執行腳本無法啟動Java應用
source /etc/profile
#當前時間
now=`date +"%Y-%m-%d %H:%M:%S"`
file_name="/opt/listen/logs/pushdemo.log" #重啟腳本的日志,保證可寫入,保險一點執行 chmod 777 data.log
pid=0
proc_num()
{
num=`ps -ef | grep 'java -jar push-0.0.1-SNAPSHOT.jar' | grep -v grep | wc -l` #此處'java -jar push-0.0.1-SNAPSHOT.jar'替代為實際的,盡量準確,避免誤kill
return $num
}
proc_id()
{
pid=`ps -ef | grep 'java -jar push-0.0.1-SNAPSHOT.jar' | grep -v grep | awk '{print $2}'` #此處'java -jar push-0.0.1-SNAPSHOT.jar'也替代為實際的
}
proc_num #執行proc_num(),獲取進程數
number=$? #獲取上一函數返回值
if [ $number -eq 0 ] #如果沒有該進程,則重啟
then
cd /opt/demo/push-server
nohup java -jar push-0.0.1-SNAPSHOT.jar & #啟動程序的命令
proc_id
echo "${now} 進程數 = ${number} 重啟應用服務:push -> pid = ${pid}" >> $file_name #把重啟的進程號、時間 寫入日志
#else
#echo "${now} 應用服務:push 正常 -> ${number}" >> $file_name
fi
- 試運行腳本,檢查腳本是否能夠正常啟動,不報錯
sh /opt/listen/listen_pushdemo.sh
- 加入定時任務
crontab -e
每個一分鐘執行一次腳本
*/1 * * * * sh /opt/listen/listen_pushdemo.sh >/dev/null 2>&1
重新載入
service crond reload
- 安裝crontab:
yum install crontabs
crontab服務操作說明:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
service crond status // 查看狀態
crontab -l //查詢定時任務列表
- 查看crond.serivce服務的自啟動狀態
systemctl is-enabled crond.service
狀態為:disabled 則執行加入開機啟動命令
chkconfig --level 35 crond on
或者
systemctl enable crond.service