用shell腳本監控進程是否存在 不存在則啟動的實例,先上代碼干貨:
#!/bin/sh
ps -fe|grep processString |grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
else
echo "runing....."
fi
#####
processString 表示進程特征字符串,能夠查詢到唯一進程的特征字符串
0表示存在的
$? -ne 0 不存在,$? -eq 0 存在
-------------------------------------------------------------
定時執行:
crontab -e
0 04,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh
每天晚上4點,中午12點,晚上21點檢測
0 4,12 * * *
分 時 日 月 周
* 04,12 * * * 這個是指4點和12點中每分鍾執行一次
0 4,12 * * * 4點12點 第0分鍾執行一次
詳細內容請看本人百度經驗: 用shell腳本監控進程是否存在 不存在則啟動教程_百度經驗
http://jingyan.baidu.com/article/59a015e3a3a404f795886542.html
=======================================
擴展相關知識:
shell的if else 語法以及大於,小於等邏輯表達式:
if ....; then
....
elif ....; then
....
else
....
fi
shell基本命令
(1)ps aux 顯示系統全部進程,一行一個
(2)grep “abc” 從標准輸入讀取字符流,輸出包含字符串“abc”的行
(3)grep -v "acb" 從標准輸入讀取字符流,輸出不包含字符串“abc”的行
(4)wc -l 從標准輸入讀取字符流,輸出行數
例如需要檢測進程httpd是否存在,操作流程如下:
(1)讀取系統所有進程
(2)判斷包含指定進程名字的信息是否存在
通過管道連接,命令如下:
ps axu | grep "httpd" | grep -v "grep" | wc -l
所有進程-->獲取包含“httpd”的行-->刪除grep進程信息-->輸出最后的行數
通過判斷命令的執行結果是否為 0 ,可以知道進程是否存在。
腳本如下:
#!/bin/sh
while true;do
count=`ps -ef|grep http|grep -v grep`
if [ "$?" != "0" ];then
echo ">>>>no httpd,run it"
service httpd start
else
echo ">>>>httpd is runing..."
fi
sleep 5
done