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

관련 정보