shell指令碼實現程式重啟

2021-08-10 10:24:09 字數 1409 閱讀 3482

最近做的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...