Linux top 명령어: 실시간 시스템 모니터링

LinuxBeginner
지금 연습하기

소개

Linux top 명령어 실습에 오신 것을 환영합니다. 이번 실습에서는 top 명령어를 사용하여 시스템 프로세스와 리소스 사용 현황을 실시간으로 모니터링하는 방법을 배웁니다. 이 기술은 시스템 관리자, 개발자, 그리고 시스템 성능을 이해하고 관리해야 하는 모든 이들에게 필수적인 역량입니다.

여러분은 운영 중인 웹 서버를 관리하는 주니어 시스템 관리자라고 가정해 봅시다. 서버가 느려졌다는 보고를 받았고, 어떤 프로세스가 리소스를 가장 많이 점유하고 있는지 찾아내야 합니다. top 명령어는 이러한 조사 과정에서 시스템 활동을 실시간으로 확인하고 분석할 수 있게 해주는 가장 기본적인 도구가 될 것입니다.

이 실습은 단계별 안내를 통해 학습과 실습을 돕는 가이드형 랩 (Guided Lab) 입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 과정은 초급 수준이며, 98%의 높은 수료율과 학습자들로부터 100%의 긍정적인 평가를 받고 있습니다.

top 명령어의 기본 사용법

먼저 가장 기본적인 형태로 top 명령어를 실행해 보겠습니다. 이를 통해 시스템 프로세스의 실시간 동적 뷰를 확인할 수 있습니다.

터미널을 열고 다음 명령어를 입력하세요:

top

그러면 다음과 유사한 화면이 나타납니다:

top - 14:30:23 up  5:10,  1 user,  load average: 0.15, 0.22, 0.28
Tasks: 213 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.3 system,  0.0 ni, 96.3 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7824.9 total,   2576.8 free,   2935.0 used,   2313.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4558.1 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 user      20   0 3626108 205008  89380 S   2.0   2.6   0:45.85 gnome-shell
 5678 user      20   0  859492  51528  38060 S   1.3   0.6   0:10.91 Xorg
 9101 user      20   0  722816  36096  29088 S   0.7   0.5   0:05.62 gnome-terminal

이 화면은 기본적으로 3 초마다 계속해서 업데이트됩니다. 각 항목이 의미하는 바는 다음과 같습니다:

  1. 첫 번째 줄은 현재 시간, 시스템 가동 시간 (uptime), 접속 사용자 수, 그리고 부하 평균 (load average) 을 보여줍니다.
  2. 두 번째 줄은 전체 작업 (task) 수와 각 상태 (실행 중, 대기 중, 정지됨, 좀비 상태) 를 표시합니다.
  3. 세 번째 줄은 CPU 사용률을 백분율로 보여줍니다.
  4. 네 번째와 다섯 번째 줄은 메모리 및 스왑 (swap) 사용량을 나타냅니다.
  5. 하단 테이블은 개별 프로세스에 대한 정보를 보여주며, 기본적으로 CPU 사용률이 높은 순서대로 정렬됩니다.

top 화면에서 나가려면 'q' 키를 누르세요.

top 에서 프로세스 정렬하기

기본적으로 top은 CPU 사용률을 기준으로 프로세스를 정렬합니다. 하지만 실행 중에 이 정렬 기준을 실시간으로 변경할 수 있습니다. 메모리 사용량을 기준으로 정렬하는 방법을 알아보겠습니다.

  1. top 명령어를 실행합니다:
top
  1. top이 실행 중인 상태에서 대문자 'M' 키를 누르세요. 그러면 CPU 사용률 대신 메모리 사용량 (상주 세트 크기) 을 기준으로 프로세스가 정렬됩니다.

이제 메모리를 가장 많이 사용하는 프로세스가 목록 상단에 표시되는 것을 확인할 수 있습니다.

  1. 다시 CPU 사용률 순으로 정렬하려면 대문자 'P' 키를 누르세요.

  2. 프로세스 ID(PID) 순으로 정렬하려면 대문자 'N' 키를 누르세요.

  3. 현재 정렬 순서를 역순으로 바꾸려면 대문자 'R' 키를 누르세요.

참고로 top 실행 중에 'h' 또는 '?' 키를 누르면 사용 가능한 모든 명령어를 확인할 수 있는 도움말 화면이 나타납니다.

확인을 마쳤다면 'q'를 눌러 top을 종료하세요.

업데이트 간격 변경하기

기본적으로 top은 3 초마다 화면을 갱신합니다. 하지만 이 간격을 조정할 수 있습니다. 더 빈번한 모니터링을 위해 업데이트 주기를 1 초로 설정해 보겠습니다.

-d 옵션을 사용하여 top을 실행합니다:

top -d 1

이제 화면이 더 빠르게 업데이트되는 것을 볼 수 있습니다. 이는 수명이 짧은 프로세스를 포착하거나 시스템 활동의 급격한 변화를 관찰해야 할 때 유용합니다.

top이 실행 중인 상태에서 업데이트 간격을 변경하는 방법은 다음과 같습니다:

  1. 소문자 'd' 키를 누릅니다.
  2. 새로운 지연 시간 (초 단위) 을 입력합니다 (예: 0.5 초를 원하면 '0.5' 입력).
  3. Enter 키를 누릅니다.

업데이트 간격을 너무 짧게 설정하면 그 자체로 CPU 리소스를 상당히 소모할 수 있으므로 상황에 맞게 적절히 사용해야 합니다.

완료되면 'q'를 눌러 종료하세요.

특정 사용자의 프로세스만 표시하기

시스템 관리자는 종종 특정 사용자가 실행 중인 프로세스만 모니터링해야 할 때가 있습니다. top 명령어를 사용하면 이를 쉽게 수행할 수 있습니다.

현재 사용자 (이 실습 환경에서는 'labex') 의 프로세스만 모니터링해 보겠습니다:

top -u labex

이제 'labex' 사용자가 소유한 프로세스만 화면에 나타납니다.

이 기능은 특정 사용자의 활동과 관련된 문제를 해결하거나, 다중 사용자 시스템에서 본인의 프로세스에만 집중하고 싶을 때 매우 유용합니다.

관찰을 마쳤다면 'q'를 눌러 종료하세요.

활성 프로세스만 표시하기

때로는 유휴 (idle) 상태의 프로세스는 무시하고 실제로 활동 중인 프로세스에만 집중하고 싶을 수 있습니다. top은 이를 위한 옵션을 제공합니다.

-i 옵션을 사용하여 top을 실행합니다:

top -i

이 명령은 마지막 업데이트 이후 CPU 사용량이 0 인 프로세스들을 필터링하여, 현재 리소스를 사용 중인 활성 프로세스만 표시합니다.

유휴 프로세스들로 인한 혼란 없이 현재 어떤 프로세스가 리소스를 점유하고 있는지 식별할 때 특히 유용합니다.

확인을 마쳤다면 'q'를 눌러 종료하세요.

요약

축하합니다! 실시간 시스템 모니터링을 위한 top 명령어 실습을 모두 마쳤습니다. 지금까지 배운 내용을 정리해 보겠습니다:

  1. 시스템 프로세스와 리소스 사용량을 확인하는 top 명령어의 기본 사용법.
  2. top 내부에서 다양한 기준 (CPU 사용률, 메모리 사용량, PID) 으로 프로세스를 정렬하는 방법.
  3. 더 빈번하거나 느린 모니터링을 위해 업데이트 간격을 변경하는 방법.
  4. 특정 사용자의 프로세스만 필터링하여 모니터링하는 방법.
  5. 유휴 프로세스를 제외하고 활성 프로세스만 표시하는 방법.

이러한 기술은 시스템 리소스를 관리하고 모니터링하는 데, 특히 성능 병목 현상을 찾아내거나 시스템 문제를 해결해야 하는 상황에서 매우 가치 있게 쓰일 것입니다.

이번 실습에서 다루지 않았지만 유용한 추가 옵션과 대화형 명령어는 다음과 같습니다:

  • -b: 배치 모드로 실행 (출력을 다른 프로그램이나 파일로 보낼 때 유용)
  • -n: 지정된 횟수만큼 업데이트한 후 top 종료
  • 'k': top 내부에서 특정 프로세스 (PID 기준) 종료 (kill)
  • 'r': 프로세스의 우선순위 (nice 값) 변경
  • 'c': 명령어 이름만 표시할지, 전체 경로를 포함한 명령줄을 표시할지 전환
  • 'V': 버전 정보 표시

효과적인 시스템 모니터링은 성능과 안정성을 유지하는 데 핵심적인 역할을 합니다. top 명령어를 주기적으로 활용하면 리소스 관련 문제가 시스템 성능에 큰 영향을 미치기 전에 미리 감지하고 예방할 수 있습니다.