카테고리 없음

[리눅스 서버 관리] Bash 스크립트로 서버 상태 자동 확인하기: CPU·메모리·디스크 한 번에 점검

14722 2026. 10. 2. 19:31

리눅스 서버를 운영할 때 시스템 리소스(CPU, 메모리, 디스크)가 정상 범위 내에서 작동하고 있는지 주기적으로 확인하는 것은 안정적인 서비스 유지의 핵심입니다. 매번 명령어를 하나씩 입력하며 모니터링하는 대신, Bash Shell Script를 활용해 클릭 한 번으로 모든 상태를 점검하는 자동화 스크립트를 만들어 보세요.

1. 서버 상태 점검 스크립트가 필요한 이유

서버의 리소스 부족은 서비스 둔화나 다운의 주요 원인이 됩니다.

  • CPU 과부하 방지: 특정 프로세스의 자원 독점 여부 파악
  • 메모리 고갈 대처: OOM(Out of Memory) 킬러 작동 전에 리소스 확보
  • 디스크 용량 관리: 용량 부족으로 인한 로그 기록 중단 및 DB 오류 예방

2. 서버 상태 통합 점검 스크립트 작성

아래 스크립트는 CPU 사용률, 메모리 사용량, 디스크 잔여 용량을 한눈에 보기 쉽게 출력해 줍니다.

(1) 스크립트 파일 생성

nano 또는 vi 에디터를 열어 스크립트 파일을 생성합니다.

Bash
 
nano system_check.sh

(2) 스크립트 코드 작성

Bash
 
#!/bin/bash

# =========================================================
# 스크립트명: system_check.sh
# 설명: CPU, 메모리, 디스크 사용량을 통합 점검하는 스크립트
# =========================================================

echo "========================================================="
echo "               시스템 상태 점검 리포트                  "
echo "               점검 시간: $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================================="
echo ""

# 1. CPU 사용률 점검 (top 명령 기반 1초간 측정)
echo "[1] CPU 사용률"
CPU_IDLE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print $1}')
CPU_USAGE=$(awk "BEGIN {print 100 - $CPU_IDLE}")
echo "  - 현재 CPU 사용률: ${CPU_USAGE}%"
echo ""

# 2. 메모리 사용량 점검
echo "[2] 메모리(RAM) 상태"
free -h | awk 'NR==1{printf "  - %-10s %-10s %-10s %-10s\n", $1, $2, $3, $4} NR==2{printf "  - %-10s %-10s %-10s %-10s\n", $1, $2, $3, $4}'
echo ""

# 3. 디스크 사용량 점검 (주요 파티션 기준)
echo "[3] 디스크 용량 상태"
df -h --total | grep -E 'Filesystem|total' | awk '{printf "  - %-15s 전체: %-8s 사용: %-8s 여유: %-8s 사용률: %s\n", $1, $2, $3, $4, $5}'
echo ""

echo "========================================================="
echo "                   점검이 완료되었습니다.                 "
echo "========================================================="

3. 스크립트 권한 설정 및 실행

작성한 스크립트를 실행 가능한 상태로 만들고 테스트합니다.

(1) 실행 권한 부여

Bash
 
chmod +x system_check.sh

(2) 스크립트 실행

Bash
 
./system_check.sh

4. 응용: Cron(크론)을 통한 결과 일일 리포트 저장

해당 스크립트를 크론탭에 등록하면 매일 정해진 시간에 점검 결과가 로그 파일로 자동 저장됩니다.

  1. 크론탭 설정 열기:
  2. Bash
     
    crontab -e
    
  3. 매일 오전 9시에 로그 파일로 결과 남기기:
  4. Plaintext
     
    0 9 * * * /path/to/system_check.sh >> /var/log/daily_system_check.log 2>&1
    

단 몇 줄의 Bash 스크립트로 리눅스 서버의 핵심 리소스를 손쉽게 점검할 수 있습니다. 위 기본 스크립트에 임계치 초과 시 메일/슬랙 알림을 보내는 기능을 추가하여 한 단계 발전된 자동화 시스템을 구축해 보세요.