Shell編程之用While簡(jiǎn)單寫個(gè)守護(hù)進(jìn)程
本文轉(zhuǎn)載自微信公眾號(hào)「Linux常用命令」,作者妖生。轉(zhuǎn)載本文請(qǐng)聯(lián)系Linux常用命令公眾號(hào)。
本節(jié)內(nèi)容還是循環(huán)語(yǔ)法,第二個(gè)循環(huán)關(guān)鍵字:while。
while循環(huán)經(jīng)常用于永久定時(shí)器,設(shè)置一個(gè)變量條件為真,則while中的命令可以永久執(zhí)行下去。語(yǔ)法格式如下:
- while condition<TRUE> ## condition為true,則循環(huán)執(zhí)行下去
- do
- command ## 滿足條件,則執(zhí)行命令
- done
示例如下:
- [root@yaomm208 ~]# vi 004-while.sh ## 編輯004-while循環(huán)腳本
- # !/bin/bash
- # filename:004-while.sh
- # author:linuxido.com
- LOCAL_TIME=$(date +"%Y-%m-%d %H:%M:%S") # 獲取時(shí)間并格式化
- while true
- do
- sshd_count=`ps -ef | grep ssh | grep -v color | wc -l` # 查看有多少ssh服務(wù)
- if [ $sshd_count -lt 1 ]
- then
- echo $LOCAL_TIME '沒有找到ssh服務(wù),重啟該服務(wù)'
- systemctl start sshd
- else
- echo $LOCAL_TIME 'ssh服務(wù)正常運(yùn)行中...'
- fi
- sleep 5 # sleep,Shell關(guān)鍵詞。數(shù)字5表示沉睡5秒,每隔5秒檢查一次
- done
運(yùn)行腳本:
- [root@yaomm208 ~]# sh 004-while.sh ## 運(yùn)行004腳本
- 2021-06-06 09:52:23 ssh服務(wù)正常運(yùn)行中... ## 進(jìn)入else分支,
- 2021-06-06 09:52:23 ssh服務(wù)正常運(yùn)行中... ## 我們發(fā)現(xiàn)時(shí)間打印的是第一次的時(shí)間
- ……
在上面的時(shí)間戳打印時(shí),我們發(fā)現(xiàn)打印的時(shí)間并沒有變化,一直是第一次打印的時(shí)間。怎么解決這個(gè)問(wèn)題?簡(jiǎn)單,將時(shí)間戳命令變成函數(shù)就行了,將后面的《函數(shù)》小節(jié)學(xué)完同學(xué)們自己就能解決這個(gè)問(wèn)題。