Linux top 명령을 사용하는 방법(및 출력 이해)

리눅스 top 명령어는 유닉스 계열 운영체제에서 매우 강력한 도구 중 하나입니다. 시스템에서 실행 중인 프로세스와 리소스 사용에 대한 풍부한 정보를 제공하는 실용적인 디스플레이를 제공합니다. 뿐만 아니라, 색상, 강조 표시, 그리고 기본적인 그래프 기능까지 지원한다는 사실을 알고 계셨나요?

정보 가득한 대시보드

top 명령어는 1984년부터 존재해 왔으며, 다양한 변종이 있습니다. 이 글에서는 모든 패치가 적용된 Ubuntu 18.04와 top 버전 3.3.12를 기준으로 설명합니다. Fedora와 Manjaro를 실행하는 다른 두 대의 테스트 컴퓨터에서도 동일한 내용을 확인했습니다.

기본 top 화면은 터미널 창에 최대한 많은 정보를 표시하도록 설계되었습니다. 시스템 관리에 필요한 필수 정보를 제공하므로 매우 유용합니다. 숙련된 시스템 관리자는 새로운 문제를 신속히 파악하고 서비스에 영향을 미치기 전에 해결할 수 있어야 하는데, top 명령어는 이를 위한 다양한 시스템 지표 대시보드를 제공합니다.

표시는 직관적이라기보다는 기능적이며, 많은 약어를 사용합니다. 처음 top을 접하면 다소 복잡하고 난해하게 느껴질 수 있습니다. 하지만 몇 번의 키 조작만으로도 디스플레이의 내용과 형식을 사용자의 필요에 맞게 조정할 수 있습니다.

사용 중인 top 버전 확인

현재 사용 중인 top 버전을 확인하려면 터미널 창에 다음 명령어를 입력하세요.

top -v

만약 사용 중인 버전이 3.3.12보다 훨씬 이전이라면, 여기서 다루는 모든 기능이 지원되지 않을 수 있습니다.

기본 화면 구성

터미널에 top을 입력하고 “Enter” 키를 눌러 실행할 수 있습니다.

top

기본 화면은 요약 영역(또는 대시보드)과 작업 영역(또는 프로세스 목록)이라는 두 가지 정보 영역으로 나뉩니다. 기본적으로 top은 3초마다 화면을 업데이트하며, 업데이트 시 약간의 깜박임이 있을 수 있습니다.

대시보드 첫 번째 줄에는 현재 시간, 시스템 가동 시간, 로그인한 사용자 수, 그리고 지난 1분, 5분, 15분 동안의 평균 로드가 표시됩니다. 두 번째 줄은 총 작업 수와 각각의 상태(실행 중, 중지됨, 대기 중, 좀비)를 나타냅니다.

세 번째 줄에는 중앙 처리 장치(CPU) 관련 정보가 표시됩니다.

us: 사용자 공간에서 프로세스를 실행하는 데 소요된 CPU 시간입니다.
sy: 시스템 커널 공간에서 프로세스를 실행하는 데 소요된 시간입니다.
ni: 수동으로 설정된 nice 값을 가진 프로세스를 실행하는 데 소요된 시간입니다.
id: CPU 유휴 시간입니다.
wa: CPU가 I/O 작업이 완료되기를 기다리는 시간입니다.
hi: 하드웨어 인터럽트를 처리하는 데 소요된 시간입니다.
si: 소프트웨어 인터럽트를 처리하는 데 소요된 시간입니다.
st: 가상 머신 실행으로 인해 손실된 시간(“도용 시간”)입니다.

네 번째 줄은 실제 메모리의 총량, 사용 중인 메모리, 여유 메모리, 버퍼링 또는 캐시된 메모리 양을 키비바이트 단위로 보여줍니다.

다섯 번째 줄은 스왑 메모리의 총량과 여유, 사용 중, 사용 가능한 메모리 양을 키비바이트 단위로 나타냅니다. 사용 가능한 메모리에는 캐시에서 복구할 수 있는 메모리가 포함됩니다.

프로세스 목록의 열 머리글은 다음과 같습니다.

PID: 프로세스 ID입니다.
USER: 프로세스 소유자입니다.
PR: 프로세스 우선 순위입니다.
NI: 프로세스의 nice 값입니다.
VIRT: 프로세스가 사용하는 가상 메모리 양입니다.
RES: 프로세스가 사용하는 상주 메모리 양입니다.
SHR: 프로세스가 사용하는 공유 메모리 양입니다.
S: 프로세스 상태입니다. (자세한 내용은 아래 목록을 참조하십시오.)
%CPU: 마지막 업데이트 이후 프로세스가 사용한 CPU 시간 점유율입니다.
%MEM: 사용 중인 물리적 메모리의 점유율입니다.
TIME+: 작업에서 사용한 총 CPU 시간(1/100초)입니다.
COMMAND: 명령 이름 또는 전체 명령줄(이름과 옵션)입니다.

메모리 값은 키비바이트 단위로 표시되며, COMMAND 열은 화면 오른쪽에 위치합니다. 위 이미지에는 COMMAND 열이 표시되지 않지만, 곧 확인하실 수 있습니다.

프로세스 상태는 다음 중 하나일 수 있습니다.

D: 중단 없는 수면 상태입니다.
R: 실행 중 상태입니다.
S: 대기 중 상태입니다.
T: 추적(중지) 상태입니다.
Z: 좀비 상태입니다.

top을 종료하려면 q 키를 누르세요.

화면 스크롤

위쪽 또는 아래쪽 화살표 키, Home, End, Page Up 또는 Page Down 키를 사용하여 위아래로 스크롤하면서 모든 프로세스를 확인할 수 있습니다.

왼쪽 또는 오른쪽 화살표 키를 사용하여 프로세스 목록을 좌우로 이동할 수 있습니다. 이는 터미널 창 너비에 맞춰지지 않는 열을 확인하는 데 유용합니다.

아래 이미지는 오른쪽 화살표 키를 여러 번 눌러 COMMAND 열을 확인한 모습입니다.

숫자 단위 변경

표시 단위를 사용하기 쉬운 값으로 변경해 보겠습니다. 대문자 E 키를 누르면 메모리 값을 표시하는 데 사용되는 단위를 키비바이트, 메비바이트, 기비바이트, 테비바이트, 페비바이트, 엑스비바이트 옵션에서 순환적으로 변경할 수 있습니다. 현재 사용 중인 단위는 4번째 줄과 5번째 줄의 첫 번째 항목에 표시됩니다.

소문자 e 키를 누르면 프로세스 목록에 표시되는 값의 단위를 (키비바이트, 메비바이트, 기비바이트, 테비바이트, 페비바이트) 순으로 변경할 수 있습니다.

E를 눌러 대시보드 메모리 단위를 기비바이트로 설정하고, e를 눌러 프로세스 목록 메모리 단위를 메비바이트로 변경한 결과입니다.

요약 정보 변경

대시보드에서 각 라인의 표시 설정을 변경하거나 완전히 제거할 수 있습니다.

로드 요약 라인(첫 번째 라인)을 켜거나 끄려면 l 키를 누르세요. 아래 이미지에서는 로드 요약 라인이 제거되었습니다.

만약 사용 중인 시스템이 멀티 코어 CPU를 탑재하고 있다면, 1 키를 눌러 각 CPU에 대한 개별 통계를 확인할 수 있습니다. 테스트 컴퓨터에는 4개의 CPU가 탑재되어 있으며, 각 CPU가 얼마나 열심히 작동하는지 확인하기 위해 1을 눌렀습니다.

물론 이렇게 하면 터미널 창에서 더 많은 공간을 차지하게 됩니다.

t 키를 누르면 CPU 사용률 표시를 ASCII 그래프로 변경하여 각 CPU의 사용률을 백분율로 나타낼 수 있습니다.

각 CPU에 대해 top은 세 개의 숫자와 그래프를 표시합니다. 왼쪽부터 오른쪽 순서대로 숫자는 다음과 같습니다.

  • usni 비율을 결합한 값(사용자 공간 + 비표준 nice 설정으로 실행되는 작업)
  • sy 백분율(커널 공간)
  • 총합 (정수 값으로 반올림)

t 키를 다시 누르면 그래프 표시를 실선 블록 문자로 변경할 수 있습니다.

CPU 디스플레이와 작업 요약 라인을 완전히 제거하려면 t 키를 한 번 더 누르세요.

m 키를 누르면 메모리 표시 옵션을 순환하면서 메모리 라인을 변경할 수 있습니다. 처음 누르면 통계가 ASCII 그래프로 변경됩니다.

한 번 더 누르면 그래프가 블록 문자로 변경됩니다.

CPU 라인을 모두 제거하려면 m 키를 한 번 더 누르세요.

원하는 경우 CPU 및 메모리 그래프를 동시에 볼 수도 있습니다. tm 키를 반복해서 누르면서 원하는 조합을 찾아보세요.

색상 및 강조 표시

z 키를 눌러 화면에 색상을 추가할 수 있습니다.

top 명령어를 생각할 때 화려한 색상 표시나 ASCII 그래프를 떠올리기는 어렵지만, 이러한 기능은 내장되어 있습니다.

y 키를 눌러 실행 중인 작업을 프로세스 목록에서 강조 표시할 수 있습니다. x 키를 누르면 프로세스 목록을 정렬하는 데 사용된 열이 강조 표시됩니다. b 키를 누르면 굵은 텍스트 강조와 반전 텍스트 강조 사이를 전환할 수 있습니다.

열 기준으로 정렬

기본적으로 프로세스 목록은 %CPU 열을 기준으로 정렬됩니다. 다음 키를 눌러 정렬 기준 열을 변경할 수 있습니다.

  • P: %CPU 열을 기준으로 정렬
  • M: %MEM 열을 기준으로 정렬
  • N: PID 열을 기준으로 정렬
  • T: TIME+ 열을 기준으로 정렬

아래 이미지는 프로세스 목록이 PID 열을 기준으로 정렬된 모습입니다.

전체 명령줄 보기

c 키를 누르면 COMMAND 열이 프로세스 이름 표시와 전체 명령줄 표시 사이를 전환합니다.

다른 프로세스에 의해 시작되거나 생성된 프로세스의 “트리” 구조를 보려면 V 키를 누르세요.

특정 사용자 프로세스 보기

특정 사용자의 프로세스만 보려면 u 키를 누르세요. 사용자 이름 또는 UID를 입력할 수 있습니다.

모니터링할 사용자의 UID 또는 이름을 입력하세요. 여기서는 “dave”를 입력하고 “Enter” 키를 눌렀습니다. 이제 작업 영역에는 “dave” 사용자에 속한 프로세스만 표시됩니다.

활성 작업만 보기

활성 작업만 보려면 I 키를 누르세요.

마지막 업데이트 이후 CPU를 사용하지 않은 작업은 표시되지 않습니다.

표시할 프로세스 수 설정

작업이 활성 상태인지 여부에 관계없이, n 키를 눌러 표시되는 프로세스 수를 특정 라인 수로 제한할 수 있습니다. 표시할 프로세스 수를 묻는 메시지가 나타납니다.

10을 입력하고 Enter 키를 눌렀으므로, 작업 영역에 10개의 프로세스만 나타납니다.

프로세스 우선순위 변경

r 키를 눌러 프로세스의 nice 값(우선순위)을 변경할 수 있습니다. 변경할 프로세스의 ID를 입력하라는 메시지가 표시됩니다. 프로세스 창 상단에 표시된 프로세스 ID를 사용하려면 Enter 키를 누르기만 하면 됩니다. 여기서는 Firefox 인스턴스의 프로세스 ID인 7800을 입력했습니다.

Enter 키를 누르면 프로세스에 적용할 새로운 nice 값을 묻는 메시지가 표시됩니다. 15를 입력하고 Enter 키를 눌렀습니다.

새로운 nice 값이 즉시 프로세스에 적용됩니다.

프로세스 종료

프로세스를 종료하려면 k 키를 누르세요. 종료할 프로세스의 ID를 묻는 메시지가 표시됩니다. 실제로 모든 신호를 프로세스에 보낼 수 있습니다. 여기서는 응답을 멈춘 프로세스 7879를 종료합니다.

보낼 신호를 입력할 수 있는 기회가 주어집니다. 이름이나 번호로 지정할 수 있습니다. Enter 키를 누르기만 하면 topSIGTERM(종료) 신호를 보냅니다.

Enter 키를 누르자마자 신호가 프로세스로 전송됩니다.

디스플레이 사용자 정의

표시되는 색상과 열도 사용자 정의할 수 있습니다. 프롬프트에 사용되는 색상을 변경해 보겠습니다. 기본값은 빨간색입니다.

<img loading=”lazy” decoding=”async” src=”https://koreantech.org/wp-content/uploads/2022/01/1641370706_992_Linux-top-%EB%AA%85%EB%A0%B9%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%9