之前公司在做項(xiàng)目測(cè)試的時(shí)候珠插,處理了一個(gè)守護(hù)進(jìn)程∈车辏現(xiàn)在渣淤,將守護(hù)進(jìn)程的方法步驟分享赏寇。具體步驟如下:
實(shí)現(xiàn)原理:由定時(shí)任務(wù)crontab調(diào)用腳本,腳本用ps檢查進(jìn)程是否存在价认,如果不存在則重啟并寫(xiě)入日志嗅定。
-
先檢查一下是否安裝了crontab。一般情況下linux系統(tǒng)會(huì)自帶crontab及crond用踩。如果沒(méi)有安裝渠退,請(qǐng)使用以下指令安裝:yum install vixie-cron,yum install crontabs捶箱。如圖所示:
查詢是否安裝crontabs crontab執(zhí)行定時(shí)(每隔30S執(zhí)行一次)
crontab –e
在vi編輯器按i鍵輸入
*/1 * * * * /mnt/test.sh
*/1 * * * * sleep 30 && /mnt/test.sh
*/1 * * * * sleep 60 && /mnt/test.sh
按esc智什,shift+:,輸入wq保存退出/mnt/test.sh 的實(shí)現(xiàn)动漾,具體代碼如下:
#! /bin/sh
host_dir=`echo ~` # 當(dāng)前用戶根目錄
proc_name="/home/hearken/jdk1.8.0_131/bin/java" # 進(jìn)程名
file_name="/mnt/bindmonitor.log" # 日志文件
pid=0
echo "++++++++++++++++++++++++++++++++++++" >> $file_name
proc_num() # 計(jì)算進(jìn)程數(shù)
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
echo "計(jì)算進(jìn)程數(shù)----" >> $file_name
echo $num, `date` >> $file_name
return $num
}
proc_id() # 進(jìn)程號(hào)
{
pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
echo "進(jìn)程id----" >> $file_name
echo ${pid}, `date` >> $file_name
}
proc_num
number=$?
if [ $number -eq 0 ] # 判斷進(jìn)程是否存在
then
JAVA_HOME=/home/hearken/jdk1.8.0_131
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
export PATH="/usr/local/python2.7/bin:$PATH"
echo "重啟進(jìn)程" >> $file_name
cd /home/hearken/jboss-JR/bin
/usr/bin/nohup ./run.sh >>/mnt/1.txt 2>&1 &
echo $?,"重啟結(jié)果" >> $file_name # 重啟進(jìn)程的命令丁屎,請(qǐng)相應(yīng)修改
proc_id # 獲取新進(jìn)程號(hào)
echo ${pid}, `date` >> $file_name # 將新進(jìn)程號(hào)和重啟時(shí)間記錄
fi
-
開(kāi)啟crontab服務(wù)
開(kāi)啟crontab服務(wù)
啟動(dòng)服務(wù)成功,查看服務(wù)狀態(tài)可使用systemctl status crond命令旱眯,也可以使用tail -f /var/log/cron查看打印的日志晨川。
- 刪除進(jìn)程測(cè)試
a、先使用ps –ef|grep named(named為進(jìn)程名)命令查看進(jìn)程删豺,然后使用kill -9 id(id為進(jìn)程號(hào))殺掉進(jìn)程
b共虑、5分鐘后,cat /mnt/bindmonitor.log看看有無(wú)最新的記錄呀页,進(jìn)程號(hào)與# ps -ef |grep named 進(jìn)程號(hào)對(duì)應(yīng)妈拌。
如果想開(kāi)機(jī)自啟動(dòng)守護(hù)進(jìn)程,只需要去編輯 /etc/rc.d/rc.local文件
vi /etc/rc.d/rc.local
如圖所示蓬蝶,添加systemctl start crond.service保存退出尘分,在重啟服務(wù)器后將自動(dòng)守護(hù)進(jìn)程。
以上就是關(guān)于守護(hù)進(jìn)程的方法丸氛。