最近做的ipc端hls推流不穩定偶爾要死機,而雲伺服器又希望能隨時連上ipc。在ipc端有沒有supervisor這種工具,就需要自己想下怎麼然異常退出的程式重啟起來。經過查閱網路資料,通過shell即可實現。
#!/bin/sh
help()
# 引數範圍檢查
if [ "$#" != 1 ];
then
help
fi
#檢查程序例項是否已經存在
while [ 1 ]; do
pid=`pgrep $`
if [ -z "$pid" ]
then
echo "restart process: $1 and date is: `date`"
exec ./$ &
fi
#迴圈檢測時間
sleep 2
done
1 #!/bin/sh
shell指令碼中用#表示注釋,相當於c語言的//注釋。但如果#位於第一行開頭,並且是#!(稱為shebang)則例外,它表示該指令碼使用後面指定的直譯器/bin/sh解釋執行
2.函式定義
shell中函式的定義格式如下:
函式名()
用函式時可以向其傳遞引數。在函式體內部,通過 n的
形式來獲
取引數的
值 1 2當
n>=10時
,需要使
用 來獲取引數。
3 .
echo 列印命令
exit 為退出指令碼
4 if then else fi 語句
在shell中用if、then、elif、else、fi這幾條命令實現分支控制。
if
then
***(滿足條件執行語句)
else
***fi
如果兩條命令寫在同一行則需要用; 如果一行只寫一條命令就不需要寫;號了
:是乙個特殊的命令,稱為空命令,該命令不做任何事。
**中實現的功能為:
$#:新增到shell的引數個數。如果引數不是1即呼叫 help
5.迴圈
while[迴圈條件]
do
.....
done 之間為迴圈內容
6 pgrep
pgrep命令以名稱為依據從執行程序佇列中查詢程序,並顯示查詢到的程序id
pid=pgrep $
查詢引數1傳入程序名 並將並賦值給pid
if [ -z 「$pid」 ]
-z 字串長度為0 即為真,即pgrep 沒有找到引數傳入程序名的pid,呼叫exec重新執行目標程式。
shell指令碼實現程序重啟
bin bash id ps ef grep zabbix grep v 0 grep v zabbix agentd grep v grep awk for id in id dokill 9 id done echo su zabbix 注意 1 不能使用pkill zabbix server ...
用shell指令碼實現監控程式自動重啟
很少用shell指令碼,最近在寫乙個shell指令碼,遇到一些問題,竟然被折騰了半天。這些錯誤太低階了,不應該.趁現在有時間,將執行該shell的指令碼的整個過程記錄下來,方便以後作為參考。一 我們先看看編寫的shell指令碼的內容,該shell的作用主要是實現監控某個程式崩潰之後就自動重啟該程序。...
shell指令碼重啟tomcat
1.新建shell空指令碼檔案,如 home tr.sh,並設定許可權 chmod 750 home tr.sh 2.設定檔案形式 sed e s m g home tr.sh home tr.sh 3.編輯指令碼 vi home tr.sh tomcat home home apache tomc...