Infra/Server
Linux - Bash 스크립트로 사용량을 조회하자
쵸비냥냥
2023. 12. 1. 15:13
반응형

평상시 우리가 서버를 점검하거나 사용량을 확인하려할때
CPU는 top
메모리는 free -m
Disk 사용량은 df -h
등으로 많이 활용한다.
하지만... 횟수가 많이 반복될수록 너무 너무 귀찮다 일일히 메모리 계산하는것도
df -h 치는것 조차도 귀찮아진다
bashrc 를 사용하여 스크립트파일을 명령어로 등록 후 편안하게 활용하자.
vi ~/.mem.sh
#!/bin/bash
#이 스크립트는 CPU,MEMORY,DISK 사용량을 확인하기 위해 만들어진 스크립트 입니다.
# CPU 사용량
cpuUsage=$(top -bn1 | awk '/Cpu/ { print $2}')
# 메모리 사용량
memUsage=$(free -m | awk '/Mem/{print $3*100/$2}')
# Cash 메모리 사용량
freemem=$(free -m | awk '/Mem/{print $8*100/$7}')
# Disk 사용량
DISK_TOTAL=$(df -P | grep -v ^Filesystem | awk '{sum += $2} END { print sum; }')
DISK_USED=$(df -P | grep -v ^Filesystem | awk '{sum += $3} END { print sum; }')
DISK_PERCENT=$((100*$DISK_USED/$DISK_TOTAL))
echo "CPU 사용률: $cpuUsage%"
echo "Memory 사용률: $memUsage%"
echo "Cash 사용률: $freemem%"
echo "Total Disk 사용률: $DISK_PERCENT%"
# 특정 디렉토리만 출력
root="/"
home="/home"
root_usage=$(df -h "$root" | awk 'NR==2 {print substr($5, 1, length($5)-1)}')
home_usage=$(df -h "$home" | awk 'NR==2 {print substr($5, 1, length($5)-1)}')
echo "${root} 디렉토리의 사용률: ${root_usage}%"
echo "${home} 디렉토리의 사용률: ${home_usage}%"
#10% 이상 사용 디렉토리 출력
mount_used=( $(df -h) )
cnt=0
found=false
for mount_used_item in "${mount_used[@]}"
do
if [[ "$mount_used_item" =~ ([1-9][0-9])% ]]; then
cnt3=$((cnt))
cnt2=$((cnt + 1))
usage=${BASH_REMATCH[1]}
if ((usage >= 10)); then
if ! $found; then
echo "10% 이상 사용 디렉토리"
found=true
fi
echo "디렉토리: ${mount_used[cnt2]}, 사용률: ${mount_used[cnt3]}"
fi
fi
cnt=$((cnt + 1))
done
이후
chmod -x .mem.sh
꼭 스크립트에 실행권한을 줘야한다.
vi ~/.bashrc
alias mem='./mem.sh'
bashrc를 수정 후
source ~/.bashrc
로그아웃했다가 다시 로그인하면 자동으로 적용되나
그마저도 귀찮으니 소스를 바로 적용해준다.
결과물

편안하다
이제 일일히 다 확인하러 다니지 않아도 된다.
반응형