명령어 : TOP
* 리눅스시스템 운용상황을 실시간으로 전반적인 상황을 모니터링하거나 프로세스 관리를 할수 있는 유틸
TOP 명령어로 확인하는 대표적인 것으로 서버평균부하율, CPU사용률, 메모리사용현황, 스왑메모리 사용현황, 모든 프로세스들의 자원 현황
[top]
TOP은 forground로 실행되며 다른 작업을 할수 없다
top이 실행된 화면에서 사용할 수 있는 여러가지 유용한 top 전용명령어들이 있다
시스템의 전반적인 상태를 실시간으로 모니터링하면서 프로세스들에 대한 원하는 작업을 할 수 있다는 의미
---------------------------------------------------------------------------------------------------------------------------------------
spacebar | 스페이스바를 누르면 즉시 refresh |
f | 해당필드 제거 또는 추가 |
o | 필드 표시순서 변경 |
F 또는 O | 필드정렬 선택 |
< | 해당 컬럼을 왼쪽으로 옮김 |
> | 해당 컬럼을 오른쪽으로 옮김 |
h or ? | 도움말을 보여준다 |
H | thread를 표시하고 감춘다 |
S | Cumulative mode를 ON(Off)한다 |
i | idle프로세스를 감추거나 표시한다 |
c | 명령행에 전체 명령(인자들 포함)들을 표시한다 |
l | 첫번째 행에 표시되는 시스템부하율을 표시하고 감춘다 |
m | 네번째와 다섯번째행의 메모리 정보와 스왑정보를 보여주거나 감춘다 |
t | 두번째와 세번째행의 정보인 CPU와 프로세스를 정보를 보여주거나 감춘다 |
k | 지정된 PID의 프로세스를 종료한다 |
r | renice값을 변경한다 (실행우선순위를 조정할 수 있다) |
N | PID번호를 기준으로 오름차순 정렬한다 |
M | 메모리의 사용량을 기준으로 정렬한다 |
T | 실행시간이 오래된 프로세스순으로 정렬한다 |
x 또는 y | x는 필드 정렬, y는 task실행에 대한 하이라이트 표시 |
z 또는 b | z는 컬러 / 흑백, b는 bold체 reverse체 |
u | 지정된 사용자의 소유로된 프로세스만 표시 |
n 또는 # | 지정된 개수만큼의 프로세스수만을 화면에 표시한다 |
d 또는 s | 지정된 초단위로 화면을 갱신한다 |
W | 환경파일을 사용자의 홈 디렉토리에 TOPRC라는 파일명으로 저장한다 |
q | top의 실행에서 빠져나간다 |
---------------------------------------------------------------------------------------------------------------------------------------
top의 실행결과 화면에 가각의 항목들에 대한 의미
* 첫번째 행 : 시스템의 부하율을 알려준다
top - 16:50:29 up 1 days, 37 min, 1 user, load average: 0.50, 0.36, 0.26
16:50:29 - 시스템 현재시간
up 1 days, 37 min - 시스템이 부팅된 후에 재부팅이나 종료 없이 현재까지 운영된 시간
1 user - 현재 로그인된 사용자의 수
load everage - 0.50, 0.36, 0.26 최근 1분, 5분, 15분 각각의 시스템 평균 부하율
* 두번째 행 : 프로세스 들의 종합적인 상황을 알려준다
Tasks: 330 total, 1 running, 329 sleeping, 0 stopped, 0 zombie
Tasks: 330 total - 전체 실행된 프로세스 수
1 running - 현재 실행된 프로세스 수
329 sleeping - 유휴상태에 있는 프로세스 수
0 stopped - 종료된 프로세스 수
0 zombie - 좀비 프로세스 수
* 좀비프로세스
- 대부분의 프로세스는 부모프로세스가 종료되면 자식프로세스는 자동 종료 된다.
부모프로세스가 종료되었음에도 자식프로세스가 아직 남아 있는 상태의 프로세스를 좀비프로세스라고 한다.
이런 좀비프로셋가 많아지면 시스템이 느려지는 원인이 될수도 있다. 대부분의 좀비프로세스는 init프로세스에 의해 관리가 된다.
그리고 계속 살아있는 좀비프로세스가 있다면 kill명령으로 강제종료 시켜도 무방하다)
* 세번째 행은 CPU의 사용 및 실행상태를 알려준다.
Cpu(s): 0.4%us, 0.1%sy, 0.0%ni, 99.4%id, 0.0%wa, 0.0%hi, 0.1%si, 0.0%st
Cpu(s): 0.4%us - 사용자가 실행시킨 프로세스의 CPU사용율
0.1%sy - 시스템자체에서 사용하는 CPU 사용율
0.0%ni - noce정책에 의해 사용되고 있는 CPU사용율
99.4%id - 사용되지 않고 남은 CPU사용율
0.0%wa - 입출력 대기상태의 CPU사용율
0.0%hi - IRQs에 사용된 CPU
0.1%si - softIRQs에 사용된 CPU
0.0%st - steal값(다른 instances 실행에 주어진 time 값)
(CPU의 사용자 사용율과 시스템 자체 사용을 그리고 NICE정책에 의한 사용율, 놀고 있는 CPU사용율등을 각각 나타내고 있다)
* 네번째 행은 실제메모리의 상태를 파악할 수 있다
Mem: 4147112k total, 3997284k used, 149828k free, 327548k buffers
Mem: 4147112k total - 실제메모리의 사용량
3997284k used - 프로세스에 의해 사용되고 있는 메모리의 사용량
149828k free - 사용되지 않고 남아있는 메모리 양
327548k buffers - 버퍼링된 메모리 양
* 다섯번째 행에서는 스왑메모밀의 상태를 파악할 수 있다
Swap: 8393920k total, 76k used, 8393844k free, 3099832k cached
Swap - 8393920k total - 전체 스왑메모리양
76k used - 프로세스에 의해 사용된 스왑메모리양
8393844k free - 남아있는 스왑메모리양
3099832k cached - 캐싱 메모리양
현재 시스템의 스왑메모리 운용상황이므로 스왑메모리가 많이 사용되고 있다라는 의미는 실제메모리가 부족하는 것을 반증하는 것이다
불가피하게 시스템 메모리를 증설할 여유가 없는 경우 스왑메모리 또한 부족하다고 판단되었다면 스왑메모리를 증설해야 한다
* 여섯번째 행은 전체 개별프로세스들의 시스템 자원 사용현황과 실행상태를 파악할 수 있다
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID - 해당 프로세스의 유일한 프로세스번호(Process ID, 키값)
USER - 프로세스를 실행시킨 사용자
PR - 프로세스의 우선순위(Priority, 키값,:H)
NI - 프로세스의 NICE값(Nice Value, 키값,:l), Minus(-)을 가질수록 높은 우선순위를 갖고, Plus(+)을 가질수록 낮은 우선순위를 갖는다
0값은 우선순위의 적용되지 않음
VIRT - 해당프로세스가 사용한 가상메모리의 총량(Vriuallmage(kb), 키값 : o)
RES - 해당프로세스의 물리적인 메모리 사용량(Resident Size(kb), 키값 : q)
RES = CODE + DATA
SHR - 해당 프로세스에 의해 사용된 공유메모리의 총량(Shared Mem Size(kb), 키값:t)
S - 해당 프로세스의 상태(Process Status, 키값 : w)를 나타내며 다음 중 하나의 값을 가진다
*D = 중단될 수 없는 Sleep상태의 프로세스
*R = 실행중인 프로세스(Running)
*S = 휴먼상태의 프로세스(sleeping)
*T = Trace되거나 스톱된 프로세스
*Z = 좀비프로세스
%CPU - ㅎ당 프로세스의 CPU사용율 (CPU usage, 키값 : n)
TIME+ - 100분의 1초 단위로 반영하는 CPU사용시간 값을 나타냄
PPID - 해당프로세스의 실제소유자
* 목적에 맞게 프로세스 정렬
SHIFT + P : CPU사용량이 가장 많은 프로세스 순서대로 정렬
SHFT + M : 메모리 사용량이 가장 많은 프로세스 순서대로 정렬
SHFT + T : 실행시간이 오래된 프로세스 순서대로 정렬
* top ( 실행중인 특정 프로세스 죽이기)
->k를 누르면 (PID to kill:)이 나온다.
* top (실행중 프로세스들의 우선순위 변경하기)
-> 리눅스에서 프로세스들의 가질수 있는 NICE값의 번위는 -20(가장 높은 우선순위)~ 19(가장 낮은 우선 순위)
r을 누른면(PID torenice:)가나오며 PID를 입력하면 (Renice PID xxxx to value:)가 나오고 NICE 값을 입력하면 된다.
* 설정파일은 이용한 TOP 실행환경 설정
top을 종ㄹ하고 나중에 다시 top을 실행하면 사용자 변경화면 대로 보이는 것이 아니라 기본화면 포맷으로 top이 실행된다
top실행 상태의 화면에서 SHFT + W키를 입력하면
"Wrote configuration to '/root/.toprc'" 라는 메시지를 출력하고 /root/.toprc라는 파일에 현재상태의 top설정내용을 저장한다
그리고 다음부터 top을 실행하면 이 설정이 그래도 적용된 top화면을 계속해서 사용할 수 있다