[리눅스명령어]프로세스 관련명령어(II)
출처 : 대전국제IT교육센터 정성재 강사
1. 프로세스 관련 고급
명령어
(1) pidof
1) 설명: 실행중인 특정 프로그램의 프로세스 ID를 출력해준다.
2) 사용법
pidof 프로그램명
3) 사용예
[root@www root]# pidof
httpd
1494 1491 1318 1315 1047 1046 1045 1044 1043 1026
=>
httpd 프로세스의 PID를 나열해 준다.
(2) vmstat
1) 설명: 프로세스, 메모리, 페이징 ,블럭장치의 I/O,
CPU의 활동상태등을 보여주는 명령이다.
2) 사용법
vmstat [options]
3)
options
-n : delay시간 및 count를 지정할 수 있다.
-V : 버전을 보여준다.
4)
사용예
ㄱ. [root@www root]# vmstat
procs
memory swap io system cpu
r b w swpd
free buff cache si so bi bo in cs us sy id
0 0
0 27168 90772 16940 374468 0 2 520 40 562 81 3 1
96
=> (설명)
a. procs
- r : 실행시간을
위해 기다리고 있는 프로세스의 수
- b : 계속 잠들어 있는 프로세스의 수
- w
: swapped out 되었거나 실행가능한 프로세스의 수
b. memory
-
swpd : 가상메모리로 사용되고 있는 양(KB)
- free : 쉬고 있는 메모리의
양(KB)
- buff : buffer에서 사용하고 있는 메모리양(KB)
-
cache : cache로 사용하고 있는 메모리양(KB)
c. swap
- si :
디스크에 swapped in된 양(KB)
- so : 디스크에서 swapped out된
양(KB)
d. io
- bi : 블록 디바이스에 보낸 블록수
(blocks/s)
- bo : 블록 디바이스로 부터 받은 블록수 (blocks/s)
e. system
- in : 초당 발생한 interrupts의 수
- cs :
초당 발생한 context switches(문맥 교환)의 수
f. cpu : us, sy, id를 총 100 퍼센트로
보고 각각의 퍼센트로 보여준다.
- us : 사용자에 의해 사용된 시간
- sy
: 시스템에 의해 사용된 시간
- id : idle 시간
ㄴ. [root@www root]#
vmstat -n 3 10
=> 3초 간격으로 10개의 결과를 출력한다.
(3) uptime
1)
설명: 현재 로그인한 후의 총 시간과 시스템 사용 현황을 보여준다.
2) 사용법
uptime
3)
사용예
[root@www root]# uptime
12:10am up 4:16, 2 users, load
average: 0.16, 0.08, 0.02
=> 현재시간, 로그인된 시간, 사용자수, load average를
보여준다. load average는 지난 1분,
5분, 15분에 대한 평균이다.
(4) iostat
1)
설명: CPU의 상태와 I/O 장치의 상태를 보여주는 명령이다.
2) 사용법
iostat [option]
3) option
간격 개수: 앞의 간격(초단위)로 개수만큼 화면에 보여준다.
-k : kilobytes단위로
보여준다.
-c : CPU상태만 보여준다.
-d : 디바이스상태만 보여준다.
-x : 파티션
단위로 상태를 보여준다.
4) 사용예
ㄱ. [root@www root]# iostat
Linux
2.4.18-14 (www) 2003년 02월 02일
avg-cpu: %user %nice %sys
%idle
0.41 0.00 0.15 99.43
Device: tps Blk_read/s Blk_wrtn/s Blk_read
Blk_wrtn
dev3-0 2.42 48.32 23.84
21530882 10620936
=> (설명)
1. avg-cpu: CPU의 상태를
나타낸다.
1) %user : 사용자레벨에서 사용한 양을 퍼센트단위로 보여준다.
2)
%nice : 사용자레벨에서 nice 순위와 관련하여 사용한 양을 퍼센트단위로 보여준다.
3) %sys :
시스템레벨(커널)에서 사용한 양을 퍼센트단위로 보여준다.
4) %idle : CPU가 대기한 상태를 퍼센트로
보여준다.
2. Device: 입출력장치의 상태를 나타낸다.
1) %tps : 디바이스에서
초당 전송하는 갯수를 나타낸다.
2) Blk_read/s : 초당 읽어들이는 블록의
갯수이다.
3) Blk_wrtn/s : 초당 쓰여지는 블록의 갯수이다.
4)
Blk_read : 블록이 읽혀진 총 갯수이다.
5) Blk_wrtn : 블록이 쓰여진 총 갯수이다.
ㄴ. [root@www root]# iostat 1 5
=> 1초 간격으로 5번 화면에 보여준다.
ㄷ.
[root@www root]# iostat -k
=> kilobytes단위로 보여준다.
5)
참고
시스템 상태를 보여주는 명령인 iostat와 sar는 sysstat라는 패키지에 의해 설치된다. 두 명령
의
결과값 형태가 유사하다.
(5) sar
1) 설명: 시스템의 활동에 관한 정보를 수집하고 보여주고 저장하는 명령이다. 이 명령은
OS에서
일어나는 활동상태를 누적시켜 표준출력으로 기록한다.
2) 사용법
sar
[option] 간격 횟수
3) option
-o 파일명: 출력값을 주어진 파일명으로 binary로
저장한다.
-f 파일명: binary로 저장된 값을 불러온다.
-A : 모든 정보를 출력한다.
-b
: I/O관련 전송율 상태 정보를 출력한다.
-B : 페이징 통계 정보를 출력한다.
-c : 새롭게 생성되어
활동하는 프로세스의 정보를 보여준다.
-e hh:mm:dd : -f 또는 -o 옵션과 같이 사용되는 옵션으로 리포트의 종료시간을
지정한다.
-n DEV | EDEV | SOCK | FULL : 네트워크 상태정보를 보여준다.
-r : 메모리와
스왑 공간의 상태를 보여준다.
-s hh:mm:dd : -f과 같이 사용되는 옵션으로 불러온 파일의 시간을
지정한다.
-u : cpu의 정보를 보여준다.
-v : 커널 테이블과 파일에서의 inode상태를
보여준다.
-w : 시스템의 switching 활동 상태를 보여준다.
-W : 시스템의 swapping 상태를
보여준다.
4) 사용예
ㄱ. [root@www root]# sar
=> CPU의 최근 상태를
보여준다.
ㄴ. [root@www root]# sar 0
=> 시스템이 시작 된 후 평균 상태를
보여준다.
ㄷ. [root@www root]# sar 1 5
=> 1초간격으로 5회
보여준다.
ㄹ. [root@www root]# sar 1 10 -o system
=> 1초간격으로
10회동안의 출력을 system파일로 저장한다.
ㅁ. [root@www root]# sar -f system
=> system이라는 파일에 저장된 값을 화면에 보여준다.
ㅂ. [root@www root]# sar
-b
=> I/O 전송율관련 정보를 보여준다.
(설명)
출력정보
tps : 물리적디스크에서 초당 전송하는 갯수
rtps :
물리적 디스크에서 요청한 초당 읽기 횟수
wtps : 물리적 디스크에서 요청한 초당 쓰기
횟수
bread/s : 블록에서 초당 읽은 데이타의 총 횟수
bwrtn/s : 블록에서 초당 쓰여진 데이타의 총 횟수
ㅅ. [root@www root]# sar -c
=> proc/s 라는 단위로 초당 활동하는 프로세스의 수를 보여준다.
ㅇ. [root@www root]# sar -e
12:00:00 -f
=> 오늘 기록된 파일(예 /var/log/sa/sa01)에서 12시까지의 기록만을
보여준다.
ㅈ. [root@www root]# sar -n FULL
=> 네트워크의 모든 상태정보를
보여준다.
1. DEV : 네트워크 장치로부터의 결과를 보여준다.
1) IFACE :
네트워크 인터페이스의 이름
2) rxpck/s : 초당 받은 패킷수
3) txpck/s
: 초당 전송한 패킷수
4) rxbyt/s : 초당 받은 바이트수
5) txbyt/s
: 초당 전송한 바이트수
6) rxcmp/s : 초당 압축한 패킷을 받은 수
7)
txcmp/s : 초당 압축한 패킷을 전송한 수
8) rxmcst/s : 초당 받은 멀티캐스트 패킷
수
2. EDEV : 네트워크 장치로부터 에러이거나 실패한 상태정보를 보여준다.
1)
IFACE : 네트워크 인터페이스의 이름
2) rxerr/s : 초당 받은 불량 패킷의
수
3) txerr/s : 전송중에 초당 발생한 에러 패킷의 수
4) coll/s :
전송중에 초당 발생한 충돌 패킷의 수
5) rxdrop/s : 리눅스 버퍼 공간의 부족으로 패킷을 받는 도중에 초당
drop된 패킷 수
6) txdrop/s : 리눅스 버퍼 공간의 부족으로 패킷을 전송중에 초당 drop된 패킷의
수
7) txcarr/s : 전송중에 초당 발생한 carrier-error수
8)
rxfram/s : 패킷을 받는중에 발생한 초당 frame alignment 수
9) rxfifo/s : 패킷을
받는 중에 발생한 초당 FIFO overrun 수
10) txfifo/s : 패킷을 전송중에 발생한 초당 FIFO
overrun 수
3. SOCK : 소켓 상태에 대한 정보를 보여준다.
1) totsck :
사용된 총 소켓수
2) tcpsck : 현재 사용중인 TCP 소켓수
3) udpsck :
현재 사용중인 UDP 소켓수
4) rawsck : 현재 사용중인 RAW 소켓수
5)
ip-frag :현재 사용중인 IP fragments 수
4. FULL : 모든 내용(DEV, EDEV, SOCK)의
결과를 보여준다.
ㅊ. [root@www root]# sar -r
=> 메모리와 스왑의 상태정보를
보여준다.
- kbmemfree : 사용가능한 메모리의 양(kilobytes)
-
kbmemused : 사용중인 메모리의 양, 커널에서 사용중인 메모리는 제외(kilobytes)
- %memused :
사용된 메모리의 퍼센트
- kbmemshrd : 시스템에서 공유메모리로 사용된 메모리양, 리눅스 2.4커널에서는 항상
0이다.(kilobytes)
- kbbuffers : 커널에서 버퍼로
사용한 메모리양(kilobytes)
- kbcached : 커널에서 캐쉬로 사용한
메모리양(kilobytes)
- kbswpfree : 스왑으로 사용가능한
공간(kilobytes)
- kbswpused : 스왑으로 사용중인 공간 (kilobytes)
- %swpused : 사용된 스왑의 퍼센트
ㅋ. [root@www root]# sar -v
=>
inode의 상태를 보여준다.
- dentunusd : 디렉토리 캐쉬에서 사용되지 않는 캐쉬
entries
- file-sz : file handles의 사용량
- %file-sz :
리눅스 커널에서 할당할 수 있는 최대 파일 핸들 수에 대한 퍼센트
- inode-sz : inode handlers의
사용량
- super-sz : 커널에 의해 할당된 super block handlers의 수
- %super-sz : 리눅스 커널에서 할당할 수 있는 최대 super block handlers의 퍼센트
-
dquot-sz : Disk Quota entries의 수
- %dquot-sz : 캐쉬된 디스크 쿼타 엔트리의 최대
할당했을 때 사용할 수 있는 디스크
쿼타 엔트리의 수
-
rtsig-sz : RT 시그널의 대기된 수
- %rtsig-sz : RT 시그널이 대기되었을 때 최대 대기가능한 RT
시그널의 퍼센트
ㅌ. [root@www root]# sar -w
=> cswch/s 라는 단위로 초당
context switching 수를 보여준다.
ㅍ. [root@www root]# sar -W
=>
스와핑상태를 보여준다.
- pswpin/s : 시스템에서 swap in한 스왑페이지의 수
-
pswout/s : 시스템에서 swpa out한 스왑페이지의 수
5) 참고
이 명령은 cron데몬과
/etc/cron.d/sysstat라는 스크립트에 의해 시스템상에 /var/log/sa라는
디렉토리밑에 'sadd'라는 이름으로
저장된다. dd는 해당 날짜를 의미한다.
(6) procinfo
1) 설명: /proc 디렉토리의 내용을 화면에
보여준다.
2) 사용법
procinfo
3) 사용예
[root@www proc]#
procinfo
Linux 2.4.18-14 (bhcompile@stripples) (gcc 3.2 20020903 ) #1
Wed Sep 4 13:35:50 EDT 2002
\ 1CPU [www]
Memory:
Total Used Free Shared Buffers Cached
Mem: 513928 505492 8436 0 69308
392432
Swap: 530104 45176 484928
Bootup:
Sat Feb 1 00:24:05 2003 Load average: 0.00 0.01 0.00 1/86 5959
user : 0:30:46.77 0.4% page in : 10765771 disk 1: 544329r
537511w
nice : 0:00:06.80 0.0% page out: 5327184
system: 0:11:31.77 0.2% swap in : 697
idle : 5d
3:30:07.98 99.4% swap out: 11428
uptime: 5d 4:12:33.00
context : 89723912
irq 0: 228942504 timer irq
7: 2
irq 1: 868 keyboard irq 8: 1
rtc
irq 2: 0 cascade [4] irq 11: 356 usb-uhci,
usb-uhci,
irq 3: 2 irq 12: 4247 PS/2
Mouse
irq 4: 2 irq 14: 1043283
ide0
irq 5: 2996177 eth0 irq 15: 3425753
ide1
irq 6: 5
(7) fuser
1) 설명: 사용중인 프로세스의 소유자를 보여주거나
신호를 보낸다.
2) 사용법
fuser option [디렉토리명]
3) option
-V:
fuser 명령의 버전을 보여준다.
-l: fuser 명령에서 사용하는 시그널목록을 보여준다.
-v: 프로세스를
PID, USER, ACCESS, COMMAND 등의 형식으로 보여준다.
-k: KILL 시그널을 보낸다.
-m:
특정파일, 마운트된 파일시스템, 블록장치 등에게 신호를 보낼 때 k옵션과 같이 쓰인다.
4) 사용예
ㄱ.
[root@linux245 root]# fuser -v /backup
USER PID ACCESS COMMAND
/backup posein 972
..c.. bash
root kernel mount
/backup
=> /backup 이라는 파티션의 프로세스를 보여준다.
(참고) ACCESS
의 값
c: 현재 디렉토리이다.
e: 현재 실행파일을 실행중인
상태이다.
f: 파일을 연 상태이다.
r: root 디렉토리라는
뜻이다.
m: 라이브러리가 공유된 상태이다.
ㄴ. [root@linux245 root]#
fuser -km /backup
=> /backup에 kill신호를 보낸다.
2. /proc 파일 시스템
(1) 설명: /proc파일 시스템은 일반 파일 시스템과는 다른 특수한 파일
시스템으로 프로세스와 커널
의 내부적인 정보를 제공하기 위한 목적으로 만들어진 파일시스템이다. 사용자가
ps명령어
를 사용해 프로세스에 대한 정보를 확인할 때 이 파일 시스템에 포함되어 있는 프로세스
의 정보가 출력되는 것이다. 보통 새로운 프로세스가 생성되면 자동으로 /proc디렉토리에
해당 PID와 같은 서브
디렉토리가 생성되고, 그 안에 해당 프로세스에 관한 정보가 들어가
게 된다.
(2) /proc 파일시스템의
구조
1) 1 : PID 1번에 대한 정보가 있는 디렉토리이다. 다른 PID번호는 해당 프로세스에 대한 정보를
갖고 있는 디렉토리이다.
2) cpuinfo : 프로세스에 관한 정보가 들어 있다.
3) devices : 현재 커널에
설정된 디바이스 드라이버들의 리스트가 들어 있다.
4) dma : 시스템에 현재 사용중인 DMA(직접 메모리 액세스)의 리스트가
들어있다. 하드웨어 충돌
시에 이 파일을 참고해야 한다.
5) interrupts : 시스템에서 사용중인
인터럽트의 리스트가 들어 있다. 역시 하드웨어 충돌시에
참고해야 한다.
6)
filesystems : 현재 커널에 설정된 파일 시스템의 리스트가 들어있다.
7) iomem : 메모리 번지별로 할당된 리스트를 볼
수 있다.
8) ioports : 시스템에 현재 사용중인 I/O포트의 리스트가 들어있다. 하드웨어 충돌시에
참고해야
한다.
9) kcore : 시스템에 장착된 물리적 메모리의 이미지로 실제 하드디스크의 용량을
차지하는 것은
아니다. 이 파일은 프로그램 실행시 비정상 종료나 프로그램의 디버깅시 유용하게
참고
할 수 있는 파일이라고 할 수 있다. 시스템에 장착된 램의 크기만큼 형성된다.
10) kmsg :
커널의 syslogd로 보내는 메시지가 들어 있는 파일이다.
11) loadavg
ㄱ. 설명: 일정 간격으로 갱신되는
시스템 로드 정보(평균 부하율)가 들어 있다.
ㄴ. 예
[root@www proc]# cat
loadavg
0.03 0.01 0.00 1/86 5989
=> 첫번째는 최근 1분 동안의 서버평균
부하율, 두번째는 최근 5분, 세번째는 최근 15분 동
안의 서버 평균부하율을 나타낸다. uptime 명령시에도
나타난다.
12) meminfo : 물리적 메모리와 스왑메모리에 대한 정보가 들어 있다.
13) modules : 커널에
연결된 모듈에 대한 정보가 들어 있다. 모듈에 관련해 문제가 생겼을 때
유용하게 참고할 수 있는
파일이다.
14) mounts: 현재 마운트되어 있는 정보가 들어있다.
15) pci : 현재 사용중인 PCI의 리스트가
들어 있다.
16) stat : 커널의 사용 현황이 들어 있다. 이 파일을 참고하면 현재 커널의 상태를 직접
파악할
수 있다.
17) uptime : 시스템 가동시간에 대한 정보가 들어 있다. uptime명령어를
사용할 때 uptime명령어
가 이 파일의 내용을 참고하여 출력하게 된다.
18)
partitions: 시스템에 설치된 하드디스크의 파티션 정보가 들어있다.
19) version: 커널 버전의 정보를 기록하고 있는
파일이다. uname 명령보다 더 자세한 정보를
기록하고 있다.
20) mdstat: RAID
사용시에 RAID에 관한 정보를 기록하고 있다.
21) /proc/ide 디렉토리 : IDE 컨트롤러 및 드라이브에 대한 정보를
기록하는 디렉토리이다.
22) /proc/scsi 디렉토리 : SCSI 컨트롤러 및 드라이브에 대한 정보를 기록하는
디렉토리이다.
23) /proc/sys/kernel 디렉토리
ㄱ. 설명: 시스템에 관한 정보가 들어있는
디렉토리이다.
ㄴ. 주요파일
a. osrelease : 운영체제의 버전을 알 수 있다.
b.
ostype : 운영체제를 알 수 있다.
c. version : 커널의 생성 날짜를 알려준다. uname -v 명령과 같은
내용이다.
d. hostname : 호스트이름을 알 수 있다.
e. sysrq : 매직키라는 특수키를 사용할 수
있는 지 여부를 알 수 있다. 기본값이 '0'이고
매직키가 사용불가하다.