Linux

bash 腳本,它將在輸出中突出顯示最大磁碟使用量行

  • August 18, 2020

我正在編寫將顯示磁碟使用狀態的 bash 腳本。如果文件系統的大小使用超過 95%,那麼該行應該只突出顯示一次,如下所示。基本上,我希望我的腳本與命令一樣工作,df -h但突出顯示最大磁碟使用量。其他文件系統也應該輸出。這是我的腳本。

readarray -t disk <<< "$(df -h | awk '{print $5}' | tail -n +2 | tr -d %)"
 for i in "${disk[@]}"
 do
   if [ $i -gt 95 ]
     then
       df -h | grep --color -E "$i%|$" 
   fi
done
# df -h

已使用的文件系統大小可用使用百分比已安裝在
devtmpfs 3.9G 0 3.9G 0% / 開發
tmpfs 3.9G 140M 3.8G 4%/dev/shm
tmpfs 3.9G 1.8M 3.9G 1%/執行
tmpfs 3.9G 0 3.9G 0%/sys/fs/cgroup
**/dev/mapper/centos-root 128G 107G 15G 96% /**
tmpfs 3.9G 15M 3.9G 1% /tmp
/dev/sda1 453M 179M 247M 42% /boot
tmpfs 789M 20K 789M 1% /run/user/42
tmpfs 789M 60K 789M 1% /run/user/1000
**/dev/mapper/centos-home 100G 85G 16G 96% /mnt**

這對我有用。如果需要,您還可以為輸出著色。

#! /bin/bash -
TXT_BLD=$(tput bold)
TXT_RST=$(tput sgr0)
IFS= mapfile -t disk < <(df -h | tail -n +2)
for line in "${disk[@]}"; do
   USAGE=$(echo $line | awk '{print $5/1}')
   if [[ "$USAGE" -gt '95' ]]; then
       echo "${TXT_BLD}$line${TXT_RST}"
   else
       echo "$line"
   fi
done

如果大於 85%,這將使線變為黃色,如果大於 95%,則變為紅色:

#! /bin/bash -
TXT_BLD=$(tput bold)
TXT_RED=$(tput setaf 1)
TXT_YLW=$(tput setaf 3)
TXT_WARN="${TXT_BLD}${TXT_YLW}"
TXT_ERR="${TXT_BLD}${TXT_RED}"
TXT_RST=$(tput sgr0)
IFS= mapfile -t disk < <(df -h | tail -n +2)
for line in "${disk[@]}"; do
   USAGE=$(echo $line | awk '{print $5/1}')
   if [[ "$USAGE" -gt '95' ]]; then
       echo "${TXT_ERR}$line${TXT_RST}"
   elif [[ "$USAGE" -gt '85' ]]; then
       echo "${TXT_WARN}$line${TXT_RST}"
   else
       echo "$line"
   fi
done

引用自:https://unix.stackexchange.com/questions/394225