Shell編程之用While簡單寫個守護進程
本文轉(zhuǎn)載自微信公眾號「Linux常用命令」,作者妖生。轉(zhuǎn)載本文請聯(lián)系Linux常用命令公眾號。
本節(jié)內(nèi)容還是循環(huán)語法,第二個循環(huán)關(guān)鍵字:while。
while循環(huán)經(jīng)常用于永久定時器,設(shè)置一個變量條件為真,則while中的命令可以永久執(zhí)行下去。語法格式如下:
- 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") # 獲取時間并格式化
 - 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ù)正常運行中...'
 - fi
 - sleep 5 # sleep,Shell關(guān)鍵詞。數(shù)字5表示沉睡5秒,每隔5秒檢查一次
 - done
 
運行腳本:
- [root@yaomm208 ~]# sh 004-while.sh ## 運行004腳本
 - 2021-06-06 09:52:23 ssh服務(wù)正常運行中... ## 進入else分支,
 - 2021-06-06 09:52:23 ssh服務(wù)正常運行中... ## 我們發(fā)現(xiàn)時間打印的是第一次的時間
 - ……
 
在上面的時間戳打印時,我們發(fā)現(xiàn)打印的時間并沒有變化,一直是第一次打印的時間。怎么解決這個問題?簡單,將時間戳命令變成函數(shù)就行了,將后面的《函數(shù)》小節(jié)學(xué)完同學(xué)們自己就能解決這個問題。















 
 
 





 
 
 
 