- 編寫(xiě)腳本
vim /opt/listen/listen_pushdemo.sh
#!/bin/sh
# 必須配置坤溃,引入環(huán)境變量甥郑;不然使用crond 定時(shí)執(zhí)行腳本無(wú)法啟動(dòng)Java應(yīng)用
source /etc/profile
#當(dāng)前時(shí)間
now=`date +"%Y-%m-%d %H:%M:%S"`
file_name="/opt/listen/logs/pushdemo.log" #重啟腳本的日志芭毙,保證可寫(xiě)入筋蓖,保險(xiǎn)一點(diǎn)執(zhí)行 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'替代為實(shí)際的,盡量準(zhǔn)確退敦,避免誤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'也替代為實(shí)際的
}
proc_num #執(zhí)行proc_num()粘咖,獲取進(jìn)程數(shù)
number=$? #獲取上一函數(shù)返回值
if [ $number -eq 0 ] #如果沒(méi)有該進(jìn)程,則重啟
then
cd /opt/demo/push-server
nohup java -jar push-0.0.1-SNAPSHOT.jar & #啟動(dòng)程序的命令
proc_id
echo "${now} 進(jìn)程數(shù) = ${number} 重啟應(yīng)用服務(wù):push -> pid = ${pid}" >> $file_name #把重啟的進(jìn)程號(hào)侈百、時(shí)間 寫(xiě)入日志
#else
#echo "${now} 應(yīng)用服務(wù):push 正常 -> ${number}" >> $file_name
fi
- 試運(yùn)行腳本瓮下,檢查腳本是否能夠正常啟動(dòng),不報(bào)錯(cuò)
sh /opt/listen/listen_pushdemo.sh
- 加入定時(shí)任務(wù)
crontab -e
每個(gè)一分鐘執(zhí)行一次腳本
*/1 * * * * sh /opt/listen/listen_pushdemo.sh >/dev/null 2>&1
重新載入
service crond reload
- 安裝crontab:
yum install crontabs
crontab服務(wù)操作說(shuō)明:
service crond start //啟動(dòng)服務(wù)
service crond stop //關(guān)閉服務(wù)
service crond restart //重啟服務(wù)
service crond reload //重新載入配置
service crond status // 查看狀態(tài)
crontab -l //查詢定時(shí)任務(wù)列表
- 查看crond.serivce服務(wù)的自啟動(dòng)狀態(tài)
systemctl is-enabled crond.service
狀態(tài)為:disabled 則執(zhí)行加入開(kāi)機(jī)啟動(dòng)命令
chkconfig --level 35 crond on
或者
systemctl enable crond.service