bash 脚本将在输出中突出显示最大磁盘使用量行

bash 脚本将在输出中突出显示最大磁盘使用量行

我正在编写 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% /dev
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% /运行/用户/42
tmpfs 789M 60K 789M 1% /运行/用户/1000
/dev/mapper/centos-home 100G 85G 16G 96% /mnt

答案1

这对我有用。如果需要,您还可以为输出着色。

#! /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

相关内容