linux下監(jiān)視進程 崩潰掛掉后自動重啟的shell腳本
更新時間:2013年06月08日 00:42:00 作者:
如何保證服務(wù)一直運行?如何保證即使服務(wù)掛掉了也能自動重啟?在寫服務(wù)程序時經(jīng)常會碰到這樣的問題。在Linux系統(tǒng)中,強大的shell就可以很靈活的處理這樣的事務(wù)
=================================================
本文為khler原作,轉(zhuǎn)載必須確保本文完整并完整保留原作者信息及本文原始鏈接
Author: HeYuanHui
E-mail: khler@163.com
QQ: 23381103
MSN: pragmac@hotmail.com
=================================================
如何保證服務(wù)一直運行?如何保證即使服務(wù)掛掉了也能自動重啟?在寫服務(wù)程序時經(jīng)常會碰到這樣的問題。在Linux系統(tǒng)中,強大的shell就可以很靈活的處理這樣的事務(wù)。
下面的shell通過一個while-do循環(huán),用ps -ef|grep 檢查loader進程是否正在運行,如果沒有運行,則啟動,這樣就保證了崩潰掛掉的進程重新被及時啟動。
必須注意兩點:
1、ps |grep 一個進程時必須加上其路勁,否則容易grep到錯誤的結(jié)果;
2、必須用 -v 從結(jié)果中去除grep命令自身,否則結(jié)果非空。
#!/bin/sh
#=====================
#YuanHui.HE
#khler@163.com
#=====================
while :
do
echo "Current DIR is " $PWD
stillRunning=$(ps -ef |grep "$PWD/loader" |grep -v "grep")
if [ "$stillRunning" ] ; then
echo "TWS service was already started by another way"
echo "Kill it and then startup by this shell, other wise this shell will loop out this message annoyingly"
kill -9 $pidof $PWD/loader
else
echo "TWS service was not started"
echo "Starting service ..."
$PWD/loader
echo "TWS service was exited!"
fi
sleep 10
done
如果啟動此shell時發(fā)現(xiàn)進程已經(jīng)存在,說明以別的方式啟動了進程而不是此shell,那么它會持續(xù)提醒找到進程,解決辦法是,要么只用此shell啟動服務(wù),要么一經(jīng)發(fā)現(xiàn)以其他方式啟動的服務(wù)即kill掉,上面的語句就是這么干的:
kill -9 $pidof $PWD/loader
本文為khler原作,轉(zhuǎn)載必須確保本文完整并完整保留原作者信息及本文原始鏈接
Author: HeYuanHui
E-mail: khler@163.com
QQ: 23381103
MSN: pragmac@hotmail.com
=================================================
如何保證服務(wù)一直運行?如何保證即使服務(wù)掛掉了也能自動重啟?在寫服務(wù)程序時經(jīng)常會碰到這樣的問題。在Linux系統(tǒng)中,強大的shell就可以很靈活的處理這樣的事務(wù)。
下面的shell通過一個while-do循環(huán),用ps -ef|grep 檢查loader進程是否正在運行,如果沒有運行,則啟動,這樣就保證了崩潰掛掉的進程重新被及時啟動。
必須注意兩點:
1、ps |grep 一個進程時必須加上其路勁,否則容易grep到錯誤的結(jié)果;
2、必須用 -v 從結(jié)果中去除grep命令自身,否則結(jié)果非空。
復(fù)制代碼 代碼如下:
#!/bin/sh
#=====================
#YuanHui.HE
#khler@163.com
#=====================
while :
do
echo "Current DIR is " $PWD
stillRunning=$(ps -ef |grep "$PWD/loader" |grep -v "grep")
if [ "$stillRunning" ] ; then
echo "TWS service was already started by another way"
echo "Kill it and then startup by this shell, other wise this shell will loop out this message annoyingly"
kill -9 $pidof $PWD/loader
else
echo "TWS service was not started"
echo "Starting service ..."
$PWD/loader
echo "TWS service was exited!"
fi
sleep 10
done
如果啟動此shell時發(fā)現(xiàn)進程已經(jīng)存在,說明以別的方式啟動了進程而不是此shell,那么它會持續(xù)提醒找到進程,解決辦法是,要么只用此shell啟動服務(wù),要么一經(jīng)發(fā)現(xiàn)以其他方式啟動的服務(wù)即kill掉,上面的語句就是這么干的:
kill -9 $pidof $PWD/loader
您可能感興趣的文章:
- Shell腳本實現(xiàn)Linux系統(tǒng)和進程資源監(jiān)控
- python實現(xiàn)監(jiān)控linux性能及進程消耗性能的方法
- linux進程監(jiān)控shell腳本代碼
- linux系統(tǒng)使用python監(jiān)控apache服務(wù)器進程腳本分享
- Linux 監(jiān)控文件被什么進程修改(詳解)
- 詳解Linux監(jiān)控重要進程的實現(xiàn)方法
- shell監(jiān)控linux系統(tǒng)進程創(chuàng)建腳本分享
- Linux工具之Nethogs按進程監(jiān)控網(wǎng)絡(luò)帶寬的安裝部署
- linux自動重啟tomcat腳本分享
- linux下通過腳本實現(xiàn)自動重啟程序
- linux進程監(jiān)控與自動重啟的簡單實現(xiàn)方法
相關(guān)文章
CentOS Stream release 9使用chrony服務(wù)同步時間的操作方法
這篇文章主要介紹了CentOS Stream release 9 使用chrony服務(wù)同步時間,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-04-04
bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpret
這篇文章主要介紹了bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory,需要的朋友可以參考下2014-10-10
shell腳本學(xué)習(xí)指南[四](Arnold Robbins & Nelson H
這篇文章主要介紹了shell腳本學(xué)習(xí)指南[四](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以參考下2014-02-02
Linux bash刪除文件中含“指定內(nèi)容”的行功能示例
這篇文章主要介紹了Linux bash刪除文件中含“指定內(nèi)容”的行功能,結(jié)合具體實例形式分析了Linux bash刪除文件指定內(nèi)容的實現(xiàn)原理與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Linux shell ftp命令根據(jù)文件日期下載文件的方法
最近做項目遇到這樣的需求要求ftp獲取遠(yuǎn)程數(shù)據(jù)的文件,根據(jù)文件的創(chuàng)建時間點下載文件。下面小編給大家分享知識點小結(jié),感興趣的朋友要求看看吧2017-09-09

