top 명령어
리눅스 시스템 상황을 실시간으로 모니터링 할때 사용하는 대표적인 명령어 이다.
윈도우의 작업관리자와 비슷한 기능을 하며 기본적으로는데몬별 CPU, RAM 사용량 등을 3초마다 실시간으로 확인 할 수 있다.
man page 를 보면 알 수 있지만 3초가 아닌 1초 단위로 화면 갱신을 원할경우 -d 옵션을 사용하자.
# top -d 1
top 명령어 사용해보기
명령어 실행
간단히 리눅스 시스템에서 'top' 라고 입력하면 된다.
$ top |
top 모니터링 화면이 열리게 된다. 다시 빠져나가는것은 'Ctrl + C' 버튼으로 다시 쉘프롬프트 화면으로 빠져나갈 수 있다.
아래 세부 단락 필드의 의미는 아래와 같다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
* PID : 프로세스 ID (PID) * USER : 프로세스를 실행시킨 사용자 ID * PRI : 프로세스의 우선순위 (priority) * NI : NICE 값. 일의 nice value값이다. 마이너스를 가지는 nice value는 우선순위가 높음. * VIRT : 가상 메모리의 사용량(SWAP+RES) * RES : 현재 페이지가 상주하고 있는 크기(Resident Size) * SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합. * S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ] * %CPU : 프로세스가 사용하는 CPU의 사용율 * %MEM : 프로세스가 사용하는 메모리의 사용율 * COMMAND : 실행된 명령어 |
그리고 아래 화면은 기본적으로 CPU 사용률이 가장 높은 프로세스 부터 출력이 된다.
시스템에 문제가 생긴 상태라면 CPU 사용률이 높은 프로세스 때문에 문제가 생겼을 가능성이 높으므로 상위 프로세스 부터 확인하는것이 좋다.
필자도 top 명령어에서 각 항목이 무엇을 의미하는지 100% 정확히 알 수 없으며 중요한것은 부하가 발생하는 프로세스가 상단에 위치한다는것이다.
제일 상단에 보면 5줄의 라인이 존재한며 시스템 전반적인 정보를 출력하고 있다.
1번째 라인
top - 11:16:47 up 4 days, 18:58, 1 user, load average: 0.15, 0.25, 0.17 |
- 11:16:47 up 4 days, 18:58 : 좌측은 현재 시간을 의미하고 오른쪽 up 뒤로는 시스템을 재시작 (리부팅) 한지 지난 시간
- 1 user : 현재 시스템에 로그인된 사용자 총 합
- load average : 시스템의 부하률을 의미하며 3개가 나오는것은 제일 촤측이 현재 값이며 오른쪽으로 갈수록 과거의 값이다. (최근 1분간의 시스템 평균 부하율, 최근 5분, 최근 15분)
2번째 라인
Tasks: 73 total, 1 running, 72 sleeping, 0 stopped, 0 zombie |
- Tasks 는 시스템에서 실행되고 있는 프로세스 정도로 알면 좋은것 같으며
- total : 현재 시스템에서 동작하고 있는 총 프로세스 숫자
- runnung : 현재 실행되고 있는 프로세스 숫자
- sleeping : 메모리에 적재되어 있으며 아직은 실행단계가 아닌 프로세스 (언제든지 실행될 수 있는 상태를 의미한다)
- stopped : 현재 중지된 프로세스 숫자
- zombie : 정상적으로 종료되지 않은 비정상적으로 종료되며 메모레 적재되어 있어서 시스템에 좋지 않은 영향을 줄 수 있는 프로세스
3번째 라인
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st |
- CPU 사용 정보를 보여준다.
- us : 사용자가 사용중인 CPU 사용률
- sy : 시스템(kernel)이 사용하는 CPU 사용률
- ni : NICE정책에 의한 CPU 사용률
- id : CPU 미사용
- wa : 입출력 대기상태
- hi : 하드웨어 인터럽트 개수
- si : 소프트웨어 인터럽트 개수
4번째 라인
Mem: 1502404k total, 298388k used, 1204016k free, 75628k buffers |
- 물리적인 메모리 사용량을 보여준다.
- total : 물리적인 메모리 총 용량
- used : 현재 시스템에서 사용하고 있는 메모리 용량
- free : 남아있는 메모리 용량 (메모리 총 용량에서 사용중인 메모리 양을 뺀 값)
- buffers : 프로세스 사이에서 공유될 수 있는 메모리 용량
5번째 라인
Swap: 2047996k total, 0k used, 2047996k free, 116540k cached |
- 물리적인 메모리가 다 사용되고 있을때, HDD의 일부를 메모리처럼 추가 사용하게된다.