1. 程式人生 > >模擬linux開機服務檢測打印效果

模擬linux開機服務檢測打印效果

模擬linux啟動服務檢測效果顯示

linux開機檢測服務狀態後顯示成功或者是失敗的狀態。有沒有發現,不管服務的名稱長短,最後那一段都能對齊顯示呢?
技術分享圖片

我們能不能寫個腳本去模擬一下呢?^_^

 來我們首先來分析一下:
 首先,確定一下當前終端的寬度
 其次,確定一下服務狀態顯示所占的字符數
 再次,確定一下服務名稱所占的字符數
 剩余的就是打印空格了

技術分享圖片

現在思路有了,咱們來寫腳本吧,編輯service_status.sh

#!/bin/bash
#
#獲取當前終端的寬度
COLUMNS=`resize -u | grep "COLUMNS=" | cut -d "=" -f2 | cut -d ";" -f1`
#判斷當前終端寬度是否為空,為空則設置默認值為80
[ -z $COLUMNS ] && COLUMNS=‘80‘

#當前終端寬度減去服務狀態顯示所在的字符數,設置服務狀態顯示字符數為10,[   OK    ][ FAILED  ]
S_COLUMNS=$[$COLUMNS-10]

#設置顏色變量
RED=‘\033[31m‘
GREEN=‘\033[32m‘
NORMAL=‘\033[0m‘

##設置成功服務的顯示
success(){
        STRING=$1
        #真實需要打印的空格數
        R_COLUMNS=$[$S_COLUMNS-${#STRING}]
        #顯示服務名稱,不換行
        echo -n "$STRING"
        #接著打印空格
        for i in `seq 1 $R_COLUMNS`;do
                echo -n " "
        done
        #最後打印服務成功字樣
        echo -e "[   ${GREEN}OK${NORMAL}   ]"
}

failed(){
        STRING=$1
        #真實需要打印的空格數
        R_COLUMNS=$[$S_COLUMNS-${#STRING}]
        #顯示服務名稱,不換行
        echo -n "$STRING"
        #接著打印空格
        for i in `seq 1 $R_COLUMNS`;do
                echo -n " "
        done
        #最後打印服務成功字樣
        echo -e "[ ${RED}FAILED${NORMAL} ]"
}

接著來編輯另外一個文件test.sh,裏面調用service_status.sh寫的函數

#!/bin/bash
#
. ./service_status.sh

#測試啟動成功服務的顯示
success "Service start success!"

#測試啟動失敗服務的顯示
failed "Service start failed~"

接下來給test.sh執行權限chmod u+x test.sh
開始執行#./test.sh
技術分享圖片

模擬linux開機服務檢測打印效果