top 명령어
top 명령어는 리눅스 시스템의 CPU 사용량, 메모리 사용량 등 전반적인 상황을 실시간으로 모니터링할 수 있는 명령어이다.
$top
터미널에서 top 명령어를 입력하면 [그림 1]과 같이 출력된다. CPU사용량, 메모리 사용량 등을 나타내주며 실시간으로 정보가 업데이트된다.
top 명령어를 사용했을 때 나오는 결과에 대해 설명하자면 다음과 같다.
요약 영역
가장 상단에 출력되는 부분은 요약 영역이다. 말 그대로 다양한 정보를 요약해서 보여준다.
1. 시스템 시간, Uptime, 유저 세션 수
가장 왼쪽 위에 시간은 시스템 현재 시간을 나타내고 바로 이어서 OS가 Up(구동)된 시간인 uptime이 출력된다. 예를 들어 [그림 3]는 현재 22시 18분 08초로 OS가 구동된 지 약 8분 정도 되었다. 그 옆에는 현재 접속 중인 유저 세션 수가 나온다.
2. 로드 애버리지(Load Average)
로드 애버리지 영역에는 3개의 숫자가 출력된다. 왼쪽에서부터 각각 1분, 5분, 15분 동안의 평균 시스템 부하를 나타낸다.
리눅스에서 부하란 해당 시간에 R(Running) 혹은 D 상태(uninterruptable sleep, I/O 작업 대기)인 프로세스의 개수를 뜻한다.
예를 들어 싱글코어에서 1.00이란 값이 나온다면 CPU를 100%로 사용할 수 있을 만큼 사용하고 있다고 볼 수 있고, 2.12 란 값이 나온다면 처리할 수 있는 양의 112%를 초과해 오버로딩 되어 부하가 걸리고 있다는 것이다.
멀티코어의 경우에는 CPU 코어의 개수로 로드 애버리지를 나눈 후 비슷하게 분석할 수 있다.
3. Tasks
Tasks는 현재 프로세스들의 상태를 출력한다.
프로세스 상태에 대해 잘 모른다면 다음을 참고하자.
4. CPU 사용량
%Cpu(s) 는 CPU의 사용율을 출력한다. 총합이 100%이며 각 항목은 다음과 같다.
- us : 유저 영역에서의 CPU 사용율
- sy : 커널 영역에서의 CPU 사용율
- ni : 프로세스 우선순위 설정에 사용되는 CPU 사용율
- id : 사용하지 않는 CPU 비율,
- wa : I/O 대기 상태의 CPU 사용율
- hi : 하드웨어 인터럽트에 사용되는 CPU 사용율
- si : 소프트웨어 인터럽트에 사용되는 CPU 사용율
- st :Hypervisor VM에서 사용하여 대기하는 CPU 비율
5. 메모리 사용량
MiB Mem 은 RAM의 정보를 출력한다. MiB Swap은 디스크를 메모리처럼 사용하는 Swap 메모리 영역의 정보를 출력한다.
total은 총 메모리 양, free는 사용가능한 메모리 양, used는 사용 중인 메모리 양이다.
buff/cache는 커널 버퍼와 디스크의 페이지 캐시에 사용되는 메모리 양이다. 즉, I/O에 사용되는 버퍼 메모리이다.
디테일 영역
디테일 영역의 각 항목은 다음과 같다.
- PID : 프로세스 ID
- USER : 프로세스를 시작한 유효한 사용자의 ID\
- PR : Scheduling Prority, 즉 작업의 우선순위
- NI : 우선순위에 영향을 주는 값으로 음수이면 우선순위가 높고 양수라면 낮음
- VIRT : 가상메모리(Virtual Memory) 크기, 프로세스가 사용하고 있는 가상메모리 용량
- RES : 상주메모리(Resident Memory) 크기, 프로세스가 실제로 사용하고 있는 물리 메모리 용량
- SHR : 공유메모리(Shared Memory) 크기, 다른 프로세스와 공유하고 있는 공유 메모리 용량
- S : 프로세스의 상태
- R : Runnung
- S : Sleeping
- I : Idle
- D : Uninterruptable Sleep
- T : 작업 제어 신호에 의해 중지됨
- t : Trace 중 디버거에 의해 중지됨
- Z : Zombie
- %CPU : CPU 사용량.
- %MEM : 메모리 사용량. 현재 사용한 실제 메모리 양
- TIME+ : 프로세스가 사용한 CPU 시간. 작업이 시작된 이후 사용한 총 CPU 시간이다.
- COMMAND : 명령어 이름. 작업을 시작할 때 사용되는 명령어 라인 혹은 프로그램의 이름을 표시
top 명령어 커맨드
top 명령어 화면에서 특정 키를 입력해 다양한 커맨드를 실행할 수 있다.
프로세스 죽이기(kill process)
top 명령어 화면이 실행되고 있을 때 k 키를 누르면 특정 프로세스를 종료할 수 있다. k키를 누른 후 PID를 입력하면 signal을 입력하라고 표시된다. 이때 9(sigkill) 시그널 혹은 15(sigterm) 시그널을 주어 프로세스를 종료할 수 있다.
참고)
정렬하기
디테일 영역을 다음과 같이 다양한 기준으로 정렬할 수 있다.
- P키 : CPU 사용량으로 정렬
- M : 메모리 사용량으로 정렬
- N : PID 순으로 정렬
- T : Running Time으로 정렬
- R : 오름차순과 내림차순 토글 변경
쓰레드 기준으로 보여주기
'H'키를 누르면 프로세스가 아닌 쓰레드 기준으로 출력한다. 주의 할 점은 소문자 'h'를 누르면 help 창으로 연결되고, 대문자 'H'를 입력해야 쓰레드 기준으로 바뀐다.
정보 바로 업데이트
top 명령어는 정보를 실시간으로 보여주기는 하지만, 약간의 딜레이가 있을 수 있다. 이때 스페이스 바를 눌러주면 화면이 바로 업데이트된다.
혹은 처음 top 명령어를 실행할 때 top -d [초 단위] 형식으로 업데이트 시간을 변경할 수도 있다.
나가기
'q' 키를 누르면 top 명령어 화면에서 나가진다.
참고
1. https://www.booleanworld.com/guide-linux-top-command/
2. https://ko.wikipedia.org/wiki/Top_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
3. https://man7.org/linux/man-pages/man1/top.1.html
'OS > [Linux]' 카테고리의 다른 글
[Linux] 리눅스 ip 주소 확인하는 법, ifconfig, hostname, ip 명령어 사용법 (0) | 2023.08.02 |
---|---|
[Linux] 리눅스 df, du 명령어 사용법, 리눅스 디스크 사용량 확인하기 (0) | 2023.07.11 |
[Linux] 리눅스 ps 명령어 사용법, 리눅스 프로세스 정보 확인하는 법 (0) | 2023.06.22 |
[Linux] 리눅스 OS 버전 확인하는 법, 리눅스 커널 버전 확인하는 법 (2) | 2023.06.07 |
[Linux] SIGTERM과 SIGKILL의 차이, kill -9와 kill -15의 차이 (0) | 2023.05.17 |