Linux 시스템 모니터링을 위한 필수 명령어 10가지

Linux 시스템 모니터링의 힘을 풀어줄 10가지 가장 필수적인 명령어에 대한 종합 가이드입니다. CPU, 메모리, 디스크 I/O 및 네트워크 성능에 대한 실시간 통찰력을 얻기 위해 `top`, `htop`, `vmstat`, `iostat`, `free`, `df`, `du`, `sar`, `ss`, `uptime`을 사용하는 방법을 알아보세요. 이 글은 시스템 관리자가 문제를 효율적으로 진단하고, 리소스 사용량을 추적하며, Linux 시스템의 안정성을 보장하는 데 도움이 되는 실용적인 예제, 주요 지표 설명, 실행 가능한 팁을 제공합니다.

41 조회수

Linux 시스템 모니터링을 위한 필수 명령어 10가지

Linux 시스템은 전 세계 수많은 애플리케이션, 서비스 및 인프라 구성 요소의 백본입니다. 시스템의 안정성, 성능 및 리소스 가용성을 보장하는 것은 모든 시스템 관리자의 중요한 책임입니다. 사전 예방적 모니터링은 병목 현상을 식별하고, 문제를 예측하며, 문제가 심화되기 전에 최적의 시스템 상태를 유지하는 데 도움이 됩니다.

이 글에서는 실시간 시스템 성능 분석 및 리소스 추적을 위해 모든 Linux 관리자가 숙달해야 하는 10가지 필수 명령어를 심층적으로 다룹니다. 이러한 도구는 CPU 및 메모리 사용량부터 디스크 I/O 및 네트워크 활동에 이르기까지 시스템의 다양한 측면에 대한 귀중한 통찰력을 제공합니다. 이러한 명령어를 이해하고 정기적으로 사용함으로써 성능 문제를 효율적으로 진단하고, 리소스를 많이 사용하는 프로세스를 식별하며, Linux 시스템이 원활하게 실행되도록 보장할 수 있습니다.

느린 서버 문제를 해결하든, 리소스 할당을 최적화하든, 단순히 정기적인 상태 점검을 수행하든, 여기서 다루는 명령어는 효과적인 Linux 시스템 모니터링의 기초를 형성합니다. 이러한 필수적인 도구와 더 건강하고 성능이 뛰어난 Linux 환경을 위해 이러한 도구를 활용하는 방법을 살펴보겠습니다.

1. top - 실시간 프로세스 활동

top 명령어는 실행 중인 Linux 시스템의 동적이고 실시간적인 보기를 제공합니다. 시스템 정보 요약과 Linux 커널에서 현재 관리 중인 프로세스 또는 스레드 목록을 표시합니다. 관리자가 시스템 활동에 대한 빠른 개요를 얻기 위해 가장 먼저 찾는 도구인 경우가 많습니다.

주요 지표:

  • CPU 사용량: us (사용자), sy (시스템), ni (nice), id (유휴), wa (I/O 대기), hi (하드웨어 IRQ), si (소프트웨어 IRQ), st (steal time).
  • 메모리 사용량: 총계, 사용 가능, 사용 중, 버퍼/캐시.
  • 스왑 사용량: 총계, 사용 가능, 사용 중.
  • 프로세스 목록: PID, 사용자, PR (우선순위), NI (nice 값), VIRT (가상 메모리), RES (상주 메모리), SHR (공유 메모리), S (상태), %CPU, %MEM, TIME+, COMMAND.

기본 사용법:

top

실용적인 예:

  • CPU 사용량별 정렬: top에서 P를 누릅니다.
  • 메모리 사용량별 정렬: top에서 M을 누릅니다.
  • 특정 사용자 프로세스 표시: top에서 u를 누른 다음 사용자 이름을 입력합니다.
  • 프로세스 종료: top에서 k를 누르고 PID를 입력합니다.

팁:

  • 1을 눌러 개별 CPU 코어의 표시를 전환합니다.
  • q를 눌러 top을 종료합니다.
  • top -bn1을 사용하여 단일 스냅샷을 얻습니다 (스크립팅에 유용).

2. htop - 대화형 프로세스 뷰어

htop은 기존 top 명령어보다 많은 이점을 제공하는 향상된 대화형 사용자 친화적인 프로세스 뷰어입니다. 더 시각적으로 매력적이고 탐색하기 쉬운 인터페이스를 제공하여 프로세스를 모니터링하고 관리하기가 더 쉽습니다.

주요 장점:

  • 시각적 미터: CPU, 메모리 및 스왑 사용량이 그래픽으로 표시됩니다.
  • 스크롤 가능한 목록: 수직 및 수평으로 스크롤하여 모든 프로세스와 전체 명령줄을 볼 수 있습니다.
  • 간편한 프로세스 관리: PID를 입력하지 않고 기능 키를 사용하여 종료, 우선순위 변경 등의 작업을 직접 수행할 수 있습니다.
  • 트리 보기: 프로세스를 트리 형식으로 표시하여 부모-자식 관계를 보여줄 수 있습니다.

기본 사용법:

# 설치가 필요할 수 있습니다:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop

실용적인 예:

  • 프로세스 필터링: F4를 누릅니다.
  • 프로세스 종료: 프로세스를 선택한 다음 F9를 누릅니다.
  • 다양한 열로 정렬: F6을 사용합니다.

팁:

  • htop은 더 나은 사용자 경험 때문에 대화형 모니터링에 일반적으로 선호됩니다.
  • 작업 흐름에 맞게 htop의 디스플레이 옵션 (F2)을 사용자 지정합니다.

3. vmstat - 가상 메모리 통계

vmstat 명령어는 프로세스, 메모리, 페이징, 블록 I/O, 트랩 및 CPU 활동에 대한 정보를 보고합니다. 메모리 병목 현상이나 높은 디스크 I/O를 식별하는 데 탁월한 도구입니다.

주요 지표:

  • r: 실행 대기 중인 프로세스 수.
  • b: 인터럽트할 수 없는 절전 모드에 있는 프로세스 수 (일반적으로 I/O).
  • swpd: 사용된 가상 메모리 양.
  • free: 사용 가능한 메모리 양.
  • si / so: 디스크에서 읽어온 메모리 양 / 디스크로 메모리 양 (스왑 인/아웃).
  • bi / bo: 블록 장치에서 받은 블록 / 블록 장치로 보낸 블록.
  • wa: I/O 완료를 기다리는 데 소비된 시간.

기본 사용법:

vmstat 1 5 # 1초마다 5회 보고

실용적인 예:

  • 모든 통계를 표로 표시: vmstat -a
  • 활성/비활성 메모리 표시: vmstat -a
  • slabinfo 표시: vmstat -m
  • 디스크 통계 표시: vmstat -d

팁:

  • 높은 si/so 값은 종종 메모리 압력과 과도한 스와핑을 나타내므로 성능을 심각하게 저하시킬 수 있습니다.
  • 일관되게 높은 wa 백분율은 I/O 병목 현상을 시사합니다.

4. iostat - I/O 통계

iostatsysstat 패키지의 일부이며 장치, 파티션 및 네트워크 파일 시스템에 대한 CPU 사용량 및 I/O 통계를 보고합니다. 디스크 성능 문제를 이해하는 데 중요합니다.

주요 지표:

  • %user, %system, %iowait, %idle: CPU 사용량 세부 정보.
  • r/s / w/s: 초당 읽기/쓰기 횟수.
  • rkB/s / wkB/s: 초당 읽기/쓴 킬로바이트 수.
  • await: 장치에 발행된 I/O 요청이 처리되는 평균 시간 (밀리초).
  • %util: I/O 요청이 장치에 발행된 CPU 시간의 백분율.

기본 사용법:

# 설치가 필요할 수 있습니다:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # 확장 통계, 1초마다 5회

실용적인 예:

  • 특정 장치 모니터링: iostat -xz /dev/sda 1
  • CPU 사용량만 표시: iostat -c
  • 장치 사용량만 표시: iostat -d

팁:

  • 높은 await 시간과 결합된 높은 %util (100%에 가까운)은 해당 장치의 I/O 병목 현상을 나타냅니다.
  • 평균 I/O 크기를 이해하기 위해 rkB/swkB/sr/sw/s를 비교합니다.

5. free - 메모리 사용량

free 명령어는 시스템의 사용 가능한 실제 메모리 및 스왑 공간의 총량과 커널에서 사용되는 버퍼 및 캐시를 표시합니다.

주요 지표:

  • total: 총 설치 메모리.
  • used: 사용된 메모리 (버퍼/캐시 포함).
  • free: 사용되지 않은 메모리.
  • shared: tmpfs (공유 메모리 세그먼트)에서 사용되는 메모리.
  • buff/cache: 커널 버퍼 및 페이지 캐시에서 사용되는 메모리.
  • available: 스와핑 없이 새 애플리케이션을 시작하는 데 사용할 수 있는 메모리 추정치.

기본 사용법:

free -h # 사람이 읽기 쉬운 출력

실용적인 예:

  • 메모리를 메가바이트 단위로 표시: free -m
  • 5초마다 연속 업데이트: watch -n 5 free -h

팁:

  • available 열은 새 프로세스에 실제로 사용 가능한 메모리 양을 이해하는 데 가장 중요한 지표입니다.
  • Linux는 디스크 캐싱에 사용 가능한 메모리를 적극적으로 사용하므로 free 값이 낮은 것은 정상이며 종종 바람직합니다.

6. df - 디스크 공간 사용량

df 명령어는 파일 시스템에서 사용 및 사용 가능한 디스크 공간의 양을 보고합니다. 스토리지 용량을 모니터링하고 디스크 전체 시나리오를 방지하는 데 필수적입니다.

주요 지표:

  • Filesystem: 파일 시스템 이름.
  • Size: 파일 시스템의 총 크기.
  • Used: 사용된 디스크 공간의 양.
  • Avail: 사용 가능한 디스크 공간의 양.
  • Use%: 사용된 디스크 공간의 백분율.
  • Mounted on: 파일 시스템의 마운트 지점.

기본 사용법:

df -h # 사람이 읽기 쉬운 출력

실용적인 예:

  • inode 사용량 표시: df -i (inode는 메타데이터 구조이며, 부족하면 사용 가능한 공간이 있더라도 파일 생성을 방지할 수 있습니다).
  • 특정 파일 시스템 유형 표시: df -hT -t ext4

팁:

  • Use%를 정기적으로 확인하여 파일 시스템이 꽉 차는 것을 방지해야 합니다. 파일 시스템이 꽉 차면 애플리케이션 오류 및 시스템 불안정을 유발할 수 있습니다.
  • 높은 inode 사용량은 많은 작은 파일로 인해 문제가 발생할 수 있습니다.

7. du - 파일 및 디렉토리의 디스크 사용량

du 명령어는 파일 공간 사용량을 추정합니다. df는 전체 파일 시스템 사용량을 확인하는 반면, du는 특정 파일이나 디렉토리의 크기를 알아내는 데 사용되며, 이는 디스크 공간을 차지하는 것을 식별하는 데 중요합니다.

주요 지표:

  • 지정된 파일 또는 디렉토리의 총 크기.

기본 사용법:

du -sh /var/log # /var/log 디렉토리에 대한 요약, 사람이 읽기 쉬운 형식

실용적인 예:

  • 모든 하위 디렉토리 크기 표시 (한 단계 깊이): du -h --max-depth=1 /home/user
  • 가장 큰 파일/디렉토리 찾기: du -ah /path/to/check | sort -rh | head -n 10

팁:

  • dusorthead를 결합하여 디스크 공간을 많이 차지하는 것을 빠르게 파악합니다.
  • du를 큰 디렉토리에서 실행할 때는 리소스를 많이 소비할 수 있으므로 주의하십시오.

8. sar - 시스템 활동 보고기

sarsysstat 패키지의 강력한 도구로, 시스템 활동 정보를 수집, 보고 또는 저장합니다. top 또는 vmstat와 같이 실시간 스냅샷을 보여주는 것과 달리, sar는 기록 데이터를 제공하는 데 뛰어나므로 장기적인 성능 분석 및 용량 계획에 매우 유용합니다.

주요 기능:

  • CPU 통계: %user, %nice, %system, %iowait, %steal, %idle.
  • 메모리 통계: kbmemfree, kbmemused, kbbuffers, kbcached.
  • 디스크 I/O: tps, rd_sec/s, wr_sec/s.
  • 네트워크 통계: rxpck/s, txpck/s, rxbyt/s, txbyt/s.
  • 로드 평균, 스왑 활동, 커널 활동 등.

기본 사용법:

# CPU 사용량 1초마다 5회 보고:
sar -u 1 5
# 디스크 활동 보고:
sar -d
# 메모리 사용량 보고:
sar -r
# 네트워크 통계 보고:
sar -n DEV

실용적인 예:

  • 어제 CPU 활동 보기: sar -u -f /var/log/sysstat/saDD (DD를 월별 날짜로 바꾸십시오)
  • 오늘 수집된 모든 데이터 표시: sar -A

팁:

  • 기록 분석을 위해 sysstat 패키지가 설치되어 있고 정기적으로 데이터를 수집하도록 구성되었는지 확인하십시오.
  • sar는 압도적일 수 있으므로 조사와 관련된 특정 플래그 (-u, -r, -d, -n)에 집중하십시오.

9. ss (소켓 통계) - 네트워크 연결

ss는 소켓을 조사하는 유틸리티입니다. 이전 netstat 명령어를 더 빠르고 효율적으로 대체하며, TCP, UDP 및 기타 소켓 유형에 대한 상태, 로컬/원격 주소 및 프로세스 ID를 포함한 더 자세한 정보를 제공합니다.

주요 지표:

  • 상태: ESTAB, LISTEN, TIME-WAIT, CLOSE-WAIT 등.
  • Recv-Q / Send-Q: 수신 및 송신 큐 크기.
  • 로컬 주소:포트 / 피어 주소:포트: 로컬 및 원격 엔드포인트.
  • 프로세스 이름: 소켓과 관련된 프로세스.

기본 사용법:

ss -tuln # TCP, UDP, 수신 대기, 숫자 포트

실용적인 예:

  • 모든 TCP 연결 나열: ss -t
  • 모든 UDP 연결 나열: ss -u
  • 특정 포트에서 수신 대기 중인 프로세스 표시: ss -tulnp | grep 80
  • 소켓 통계 요약: ss -s

팁:

  • 비정상적으로 많은 TIME-WAIT 연결이 있는지 확인하십시오. 이는 클라이언트 측 문제 또는 잘못 구성된 웹 서버를 나타낼 수 있습니다.
  • 네트워크 버퍼링 문제 또는 느린 애플리케이션 처리의 징후를 보려면 Recv-QSend-Q를 모니터링하십시오.

10. uptime - 시스템 가동 시간 및 로드 평균

uptime 명령어는 시스템이 실행된 시간, 현재 시간, 로그인한 사용자 수, 지난 1분, 5분 및 15분 동안의 시스템 로드 평균을 보여줍니다.

주요 지표:

  • 현재 시간: 자명합니다.
  • 가동 시간: 시스템이 실행된 시간.
  • 사용자: 현재 로그인한 사용자 수.
  • 로드 평균: 실행 가능하거나 인터럽트할 수 없는 상태에 있는 프로세스의 평균 수. 여기에는 CPU에서 실행 중이거나, CPU를 기다리거나, 디스크 I/O를 기다리는 프로세스가 포함됩니다.
    • 1분 로드 평균
    • 5분 로드 평균
    • 15분 로드 평균

기본 사용법:

uptime

실용적인 예:

  • 서버의 전반적인 바쁨 상태에 대한 빠른 건강 점검으로 자주 사용됩니다.

팁:

  • 로드 평균을 시스템의 CPU 코어 수와 비교합니다. CPU 코어 수보다 지속적으로 높은 로드 평균은 종종 CPU 또는 I/O 병목 현상을 나타냅니다.
  • 시간이 지남에 따라 증가하는 로드 평균 (예: 1분 > 5분 > 15분)은 시스템이 더 바빠지고 있음을 시사합니다.

결론

이 10가지 필수 Linux 명령어를 숙달하는 것은 건강하고 성능이 뛰어난 시스템을 모니터링하고 유지 관리하는 데 중점을 둔 모든 시스템 관리자에게 기본입니다. tophtop으로 CPU 급증을 빠르게 식별하는 것부터 iostat로 디스크 I/O 병목 현상을 진단하고 vmstat로 메모리 압력을 파악하는 것까지, 이러한 도구는 사전 예방적 시스템 관리를 위한 포괄적인 도구 세트를 제공합니다.

이러한 명령어를 모니터링 루틴에 정기적으로 통합하고, 출력을 이해하며, 각 명령어를 사용할 시기를 알면 문제를 효율적으로 해결하고, 리소스 사용량을 최적화하며, Linux 인프라의 안정성을 보장할 수 있습니다. 해당 옵션을 계속 탐색하고 스크립트에 통합하여 자동화된 보고를 통해 시스템 관리 기능을 향상시키십시오. 즐거운 모니터링 되십시오!