top
#top
리눅스 시스템의 운용상황을 실시간으로 전반적인 상황을 모니터링하거나 프로세스관리를 할 수 있는 유틸리티이고 프로세스의 CPU, MEMORY 사용량 등 시스템의 전반적인 상황을 실시간으로 모니터링하는 프로그램이다.
<명령어 위치> : /usr/bin/top
<사용법>
top [옵션]
<옵션>
-c : 명령행 전체를 보여준다.
-d 시간 : 화면 갱신 시간을 지정한다.
-i : idle 상태와 좀비 프로세스는 무시한다.
아래 top을 실행 했을 때의 화면이다.
위 내용에 대해서 자세히 공부해 보자. 위 사항은 필수적이기 때문에 자세히 알수록 좋다!
top - 14:01:05 up 3 min, 1 user, load average: 1.17, 1.39, 0.61
시스템의 현재시간과 시스템이 부팅된 후에 재부팅이나 종료없이 얼마동안 계속 운영이 되고 있는가를 알 수 있다.(14:01:05 up 3 min)
현재 로그인된 사용자의 수(1 user)
시스템의 최근 1분, 5분, 15분에 대한 각각의 평균 부하율(load average)를 나타내고 있다.
[참고] 위는 uptime 명령어의 결과와 같다.
Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie
두번째 행의 결과는 현재 실행중인 프로세스들의 전체적인 상황을 알려주는 것이 목적이다.
즉 전체 실행된 프로세스 수(80 total)
현재 실행되고 있는 프로세스 수(1 running)
sleeping 된 수(79 sleeping)
stopped 된 수(0 stopped)
zombie 수(0 zombie)를 각각 나타내고 있다.
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
세번째 행은 CPU의 전반적인 운용상황(CPU stats)를 알려주는 것이 목적이다.
사용자가 실행시킨 프로세스의 CPU 사용율(us)
시스템 자체에서 사용하는 CPU 사용율(sy)
nice 정책에 의해 사용되고 있는 SPU 사용율(ni)
사용되지 않고 남아있는 CPU 사용율(id)
입출력 대기상태의 사용율(wa)
그리고 (hi), (si), (st) 등의 CPU 상태를 나타내주고 있다.
Mem: 255596k total, 99300k used, 156296k free, 9232k buffers
시스템의 전반적인 메모리 운용상황을 보여주는 것이 목적이다.
전체 사용량(255596k total)
프로세스에 의해 사용되고 있는 메모리 사용량(99300k used)
사용되지 않고 남아있는 메모리량(156296k free)
버퍼링된 메모리량(9232k buffers)
Swap: 524280k total, 0k used, 524280k free, 55624k cached
이 행의 목적은 스왑메모리 사용현황을 알려주는 것이다.
[참고] Swap 메로리 사용량이 많으면, 실제메모리(RAM)이 부족하다는 것을 알아두자!
아래 top 명령어의 마지막 부분에 나오는 것은 현재 실행중인 프로세스들의 세부 정보이다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
pid : process id를 말한다.
user : process의 소유자 (즉 실행자)를 의미한다.
pri : Process가 OS의 Process 스케쥴러에서 갖는 우선 순위를 말한다. 우선순위가 높으면 우선 순위가 낮은것 보다 우선 적으로 실행된다.
ni : Process의 nice value입니다. 음수인 경우 높은 우선순위를 갖는다.
size : 프로세스의 코드 사이즈(프로그램 사이즈) + 스텍 사이즈를 말한다. (단위는 KB)
rss : 프로세스가 사용하는 전체 메모리양.
share : 프로세스가 사용하는 Shared Memory의 크기.
stat : 프로세스 상태(S:Sleeping, D:uninterrupted Sleeping, R:Running, Z:Zombie, T:Stopped or traced)
cpu : 프로세스의 CPU 점유율.
mem : 프로세스의 메모리 점유율.
time : 프로세스가 실행된 이후의 총 CPU 시간.
command :프로세스를 실행 시킨 Command Line 명령어를 의미한다.
◆ top 실행중 사용할 수 있는 명령어
[SPACEBAR] : 화면을 갱신한다.
k : kill 명령
r : nice 값 변경
l(소문자 엘) : top 맨 윗줄의 항목 on/off
m : 메모리 항목 on/off
t :프로세스와 CPU 항목 on/off
c : command line의 옵션 on/off
q : 프로그램 종료
※ top 으로 확인되는 시스템 운용 상황의 refresh 시간을 조정하여 모니터링 해보자.
top은 아무런 옵션없이 실행하면 5초에 한번씩 화면을 refresh 하여 새롭게 갱신한다. 하지만 다음과 같이 –d 옵션을 사용하면 refresh를 원하는 간격단위(초 단위)로 실행할 수 있다.
refresh 시간을 2초마다 한번씩 하고자 할 때
[root@localhost ~]# top -d 2
[참고] top –d 0.5 나 top –d 0.05 등과 같이 초 이하의 단위로도 실행 가능하다.
top으로 확인되는 시스템 운영상황을 지연시간 없이 실시간으로 계속 refresh 하기
[SPACEBAR]를 연속으로 누르는 것을 추천한다.
[주의] top 프로세스 자체로도 시스템의 부하를 줄 수 있으며 –q 옵션을 사용하여 실시간으로 화면을 갱신하게 되면 시스템에 큰 부하를 줄 수도 있기 때문에 꼭 필요한 경우 아니라면 –q 옵션을 자제하기 바란다.
top의 결과에서 실행중인 프로세스들의 전체 명령행으로 확인하기
[root@localhost ~]# top -c
7287 root 15 -5 0 0 0 S 0.0 0.0 0:00.00 [sdp]
7642 root 15 0 2308 704 408 S 0.0 0.3 0:00.01 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient-eth0.leases -pf
7708 root 16 -3 12132 652 492 S 0.0 0.3 0:00.04 auditd
마지막으로 도움말 확인하기
top 을 실행시킨 후에 h 나 ? 키를 누르면 더욱 자세한 옵션이 나타난다.
물론 top을 실행시킨 상태에서 해야하는 작업들이다.
※ top 종료하기 : [CTRL]+c