天天看點

linux中程式定時重新開機腳本,linux 程式定時重新開機腳本

首先在目前目錄下建立一個名為test2.sh的檔案

檔案下面下如下面内容:

#!bin/bash

while :

do

echo "yes hello world"

sleep 1

done

儲存,退出,添加執行權限:chmod +x test2.sh

同理建立一個test.sh

#!bin/bash

while :

do

if [ $(ps -ef | grep "test2" | grep -v "grep" | wc -l) -eq 1 ];then

kill $(ps -ef|grep "test2.sh"|awk '{print $1}')

echo "kill"

sh test2.sh

echo "restart"

else

echo "not found"

fi

sleep 2

done

儲存,推出,添加執行權限

說明:

#!bin/bash:告訴系統該腳本需要用sh來執行

while :無限循環模式,注意while與“:”之間有一個空格!

do:與while一起

if [ $(ps -ef | grep "test2" | grep -v "grep" | wc -l) -eq 1 ];then:

if...then語句,而ps -ef | grep "fd" | grep -v "grep" | wc -l查驗test2程式是否在運作,如果在運作,那麼會傳回所有名字為test2的程式行數,如果沒有在運作的程式,那麼傳回0,

$()表示變量的意思,這裡不能使用下面的文法,否則什麼也得不到!

processNum=$(ps -ef | grep "test2" | grep -v "grep" | wc -l)

if( ${processNum} -eq 1)

正确的文法是:

processNum=ps -ef | grep "test2" | grep -v "grep" | wc -l'

-eq:是相等的意思

這句話整體意思是:如果系統中存在名字為test2的程式,并且隻有一個程式,那麼:

kill $(ps -ef|grep "test2.sh"|awk '{print $1}')

ps -ef|grep "test2.sh"|awk '{print $1}'傳回的是test2.sh的pid,這樣就能讓kill指令使用了!

當然這裡的print $1要按照系統的實際情況來定,可能是第一列($1),也可能是第二列($2),也可能是其他

echo "kill":輸出kill字元

sh test2.sh:test2.sh指令重新開機

else

echo "not found"

與上面的if語句一起使用,如果沒有test2的程式,那麼輸出“not found"

fi:結束if語句

sleep 2:延時兩秒

done:while循環

腳本調試

最簡單的調試方法當然是使用echo指令。你可以在任何懷疑出錯的地方用echo列印變量值,這也是大部分shell程式員花費80%的時間用于調試的原因。Shell腳本的好處在于無需重新編譯,而插入一個echo指令也不需要多少時間。

shell也有一個真正的調試模式,如果腳本”strangescript”出錯,可以使用如下指令進行調試:

sh -x strangescript

7 上述指令會執行該腳本,同時顯示所有變量的值。

shell還有一個不執行腳本隻檢查文法的模式,指令如下:

sh -n your_script

這個指令會傳回所有文法錯誤。