Linux 시스템 모니터링을 위한 필수 명령어 10가지
CPU, 메모리, 디스크, 네트워크 소켓, 부하 및 과거 시스템 활동을 확인하기 위한 10가지 리눅스 모니터링 명령어를 알아보세요.
리눅스 시스템 모니터링을 위한 상위 10가지 필수 명령어
리눅스 서버가 느려졌을 때, CPU, 메모리, 디스크, 네트워크 또는 부하 중 어디에 문제가 있는지 알려주는 명령어가 필요합니다. 이러한 리눅스 모니터링 명령어는 "서버가 느리다"에서 구체적인 다음 단계로 이동하는 데 도움을 줍니다.
아래 10가지 도구는 빠른 스냅샷, 대화형 보기 및 과거 데이터를 제공합니다. 하나의 수치만 신뢰하지 말고 함께 사용하세요.
1. top - 실시간 프로세스 활동
top 명령어는 실행 중인 리눅스 시스템의 동적이고 실시간 보기를 제공합니다. 시스템 정보 요약과 리눅스 커널이 현재 관리하는 프로세스 또는 스레드 목록을 표시합니다. 관리자들이 시스템 활동을 빠르게 개괄적으로 파악하기 위해 가장 먼저 사용하는 도구입니다.
주요 지표:
- CPU 사용량:
us(사용자),sy(시스템),ni(nice),id(유휴),wa(I/O 대기),hi(하드웨어 IRQ),si(소프트웨어 IRQ),st(도난 시간). - 메모리 사용량: 전체, 사용 가능, 사용됨, 버퍼/캐시.
- 스왑 사용량: 전체, 사용 가능, 사용됨.
- 프로세스 목록: 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를 입력하지 않고 기능 키를 사용하여 종료, renice 및 기타 작업을 직접 수행할 수 있습니다.
- 트리 보기: 프로세스를 트리 형식으로 표시하여 부모-자식 관계를 보여줍니다.
기본 사용법:
# 설치가 필요할 수 있음:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop
실용적인 예제:
- 프로세스 필터링:
F4를 누릅니다. - 프로세스 종료: 프로세스를 선택한 다음
F9를 누릅니다. - 다양한 열별 정렬:
F6을 사용합니다.
팁:
htop은 뛰어난 사용자 경험으로 인해 일반적으로 대화형 모니터링에 선호됩니다.htop의 표시 옵션(F2)을 사용자 정의하여 작업 흐름에 맞게 조정하세요.
3. vmstat - 가상 메모리 통계
vmstat 명령어는 프로세스, 메모리, 페이징, 블록 IO, 트랩 및 CPU 활동에 대한 정보를 보고합니다. 메모리 병목 현상이나 높은 디스크 I/O를 식별하는 데 탁월한 도구입니다.
주요 지표:
r: 실행 시간을 기다리는 프로세스 수.b: 인터럽트할 수 없는 대기 상태(일반적으로 I/O)에 있는 프로세스 수.swpd: 사용된 가상 메모리 양.free: 유휴 메모리 양.si/so: 디스크에서 스왑 인 / 디스크로 스왑 아웃된 메모리 양.bi/bo: 블록 장치에서 수신된 블록 / 블록 장치로 전송된 블록.wa: I/O 완료를 기다리는 데 소요된 시간.
기본 사용법:
vmstat 1 5 # 1초마다 보고, 5회
실용적인 예제:
- 활성/비활성 메모리 표시:
vmstat -a - slabinfo 표시:
vmstat -m - 디스크 통계 표시:
vmstat -d
팁:
- 높은
si/so값은 종종 메모리 압력과 과도한 스와핑을 나타내며, 이는 성능을 심각하게 저하시킬 수 있습니다. - 지속적으로 높은
wa비율은 I/O 병목 현상을 시사합니다.
4. iostat - I/O 통계
iostat은 sysstat 패키지의 일부이며 장치, 파티션 및 네트워크 파일 시스템에 대한 CPU 사용률 및 I/O 통계를 보고합니다. 디스크 성능 문제를 이해하는 데 중요합니다.
주요 지표:
%user,%system,%iowait,%idle: CPU 사용률 분석.r/s/w/s: 초당 읽기/쓰기.rkB/s/wkB/s: 초당 읽기/쓰기된 킬로바이트.await: 장치에 발행된 I/O 요청이 처리되는 평균 시간(밀리초).%util: 장치에 I/O 요청이 진행 중이었던 경과 시간의 백분율.
기본 사용법:
# 설치가 필요할 수 있음:
# 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
팁:
- 높은
%util과 높은await시간이 결합되면 해당 장치의 I/O 병목 현상을 가리키는 경우가 많습니다. 최신 SSD 및 가상화된 스토리지에서는 디스크가 포화 상태라고 가정하기 전에 애플리케이션 지연 시간으로 확인하세요. rkB/s및wkB/s를r/s및w/s와 비교하여 평균 I/O 크기를 이해합니다.
5. free - 메모리 사용량
free 명령어는 시스템의 사용 가능한 물리적 메모리와 스왑 공간의 총량, 그리고 커널이 사용하는 버퍼와 캐시를 표시합니다.
주요 지표:
total: 설치된 총 메모리.used: 사용된 메모리(버퍼/캐시 포함).free: 사용되지 않은 메모리.shared: tmpfs에서 사용하는 메모리(공유 메모리 세그먼트).buff/cache: 커널 버퍼 및 페이지 캐시에서 사용하는 메모리.available: 스와핑 없이 새 애플리케이션을 시작하는 데 사용할 수 있는 메모리 추정치.
기본 사용법:
free -h # 사람이 읽기 쉬운 출력
실용적인 예제:
- 메모리를 메가바이트 단위로 표시:
free -m - 5초마다 지속적으로 업데이트:
watch -n 5 free -h
팁:
available열은 새 프로세스에 실제로 사용 가능한 메모리 양을 이해하는 가장 중요한 지표입니다.- 리눅스는 디스크 캐싱을 위해 사용 가능한 메모리를 적극적으로 사용하므로 낮은
free값은 정상적이며 종종 바람직합니다.
6. df - 디스크 공간 사용량
df 명령어는 파일 시스템에서 사용 및 사용 가능한 디스크 공간의 양을 보고합니다. 스토리지 용량을 모니터링하고 디스크 가득 참 시나리오를 방지하는 데 필수적입니다.
주요 지표:
Filesystem: 파일 시스템의 이름.Size: 파일 시스템의 총 크기.Used: 사용된 디스크 공간의 양.Avail: 사용 가능한 디스크 공간의 양.Use%: 사용된 디스크 공간의 백분율.Mounted on: 파일 시스템의 마운트 지점.
기본 사용법:
df -h # 사람이 읽기 쉬운 출력
실용적인 예제:
- inode 사용량 표시:
df -i(inode는 메타데이터 구조입니다. 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
팁:
du를sort및head와 결합하여 디스크 공간을 많이 차지하는 항목을 빠르게 찾아내세요.- 큰 디렉토리에서
du를 실행할 때는 리소스를 많이 사용할 수 있으므로 주의하세요.
8. sar - 시스템 활동 보고자
sar은 sysstat 패키지의 강력한 도구로, 시스템 활동 정보를 수집, 보고 또는 저장합니다. 실시간 스냅샷을 보여주는 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. - 부하 평균, 스왑 활동, 커널 활동 등.
기본 사용법:
# 1초마다 CPU 사용률 보고, 5회:
sar -u 1 5
# 디스크 활동 보고:
sar -d
# 메모리 사용률 보고:
sar -r
# 네트워크 통계 보고:
sar -n DEV
실용적인 예제:
- 저장된 CPU 활동 파일 보기: 많은 Debian 기반 시스템에서는
sar -u -f /var/log/sysstat/saDD, 많은 RHEL 기반 시스템에서는/var/log/sa/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소켓이 자동으로 나쁜 것은 아닙니다. 바쁜 TCP 서비스에서는 정상일 수 있습니다. 문제로 간주하기 전에 포트 고갈, 실패한 연결 또는 큐 증가와 함께 확인하세요. - 네트워크 버퍼링 문제나 느린 애플리케이션 처리의 징후가 있는지
Recv-Q및Send-Q를 모니터링하세요.
10. uptime - 시스템 가동 시간 및 부하 평균
uptime 명령어는 시스템이 실행된 기간, 현재 시간, 로그인한 사용자 수, 그리고 지난 1분, 5분, 15분 동안의 시스템 부하 평균을 보여줍니다.
주요 지표:
- 현재 시간: 설명이 필요 없습니다.
- 가동 시간: 시스템이 실행된 기간.
- 사용자: 현재 로그인한 사용자 수.
- 부하 평균: 실행 가능하거나 인터럽트할 수 없는 상태에 있는 프로세스의 평균 수입니다. 여기에는 CPU에서 실행 중인 프로세스, CPU를 기다리는 프로세스 또는 디스크 I/O를 기다리는 프로세스가 포함됩니다.
- 1분 부하 평균
- 5분 부하 평균
- 15분 부하 평균
기본 사용법:
uptime
실용적인 예제:
- 서버의 일반적인 사용량에 대한 빠른 상태 확인으로 자주 사용됩니다.
팁:
- 부하 평균을 시스템의 CPU 코어 수와 비교하세요. 부하 평균이 CPU 코어 수보다 지속적으로 높으면 종종 CPU 또는 I/O 병목 현상을 나타냅니다.
- 시간이 지남에 따라 부하 평균이 증가하면(예: 1분 > 5분 > 15분) 시스템이 더 바빠지고 있음을 시사합니다.
간단한 문제 해결 흐름
느린 서버의 경우 uptime으로 부하를 확인한 다음 top 또는 htop으로 바쁜 프로세스를 찾으세요. free -h 및 vmstat 1 5로 메모리 압력을 확인하고, iostat -xz 1 5로 디스크 지연 시간을 확인하고, ss -tulnp로 수신 대기 서비스 또는 백업된 소켓을 확인하세요. 문제가 이전에 발생했다면 sar을 사용하여 문제가 있던 시간대를 정상 시간대와 비교하세요.
핵심은 간단합니다. 각 명령어는 이야기의 한 부분을 설명합니다. 여러분의 임무는 서비스를 다시 시작하거나 머신 크기를 조정하기 전에 CPU, 메모리, 디스크 및 네트워크 증거를 정렬하는 것입니다.