web-dev-qa-db-ja.com

出力で最大ディスク使用量行を強調表示するbashスクリプト

ディスクの使用状況を表示するbashスクリプトを書いています。ファイルシステムのサイズが95%を超えて使用されている場合、その行は以下のように1回だけ強調表示する必要があります。基本的に、スクリプトをコマンド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%/ run
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

3
BDN

これは私のために働いています。必要に応じて、出力に色を付けることもできます。

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