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