리눅스 프로세스 잘 관리하는 비법 - "프로세스 관리 명령 세트 메뉴"
프로세스 관리 명령
1. ps
현재 시스템에서 실행 중인 프로세스 목록을 출력한다.
사용형식
ps [옵션]
사용옵션
-A : 모든 프로세스 출력.
-e : -A와 동일.
T : 현재 터미널에서 실행된 프로세스만 출력.
-a : 현재 세션 사용자에 의해 모든 터미널에서 실행된 프로세스 출력.
a : 모든 프로세스를 BSD 스타일로 출력. 명령과 함께 사용된 파라메터도 출력. x와 함께 사용시 제어 터미널없이 실행된 프로세스까지 함께 출력.
-d : 현재 세션 사용자에 의해 실행된 모든 프로세스를 제어 터미널 유무와 상관없이 전부 출력.
r : 현재 실행중인 프로세스만 출력.
x : 제어 터미널 없이 실행된 프로세스만 출력. a 옵션과 보통 함께 사용.
f : pstree와 같은 형식으로 ASCII art 방식으로 출력.
-F : 모든 항목을 다 출력.(full format)
-f : UNIX 스타일로 모든 항목 출력.
j : 부모 프로세스를 포함한 jobs 형식으로 출력.
-j : jobs 형식.
l : BSD 스타일의 자세한 항목 출력.
-l : long format. -y옵션과 함께 사용하면 플래그 정보를 표시하지 않는다.
u : UID를 포함하여 출력.
v : 가상 메모리 정보를 포함하여 출력.
-Z : 보안 컨텍스트 정보 출력.(SELinux에 해당.)
h : 헤더 없이 출력.
w, -w : wide format으로 줄바꿈하여 모든 항목 출력.
일반적으로 1개의 옵션만을 사용하기 보다는 관련있는 옵션을 묶어서 사용한다. ps 명령의 실행 예는 다음과 같다.
모든 프로세스를 표준적인 방법을 출력하는 예:
$ ps -e
$ ps -ef
$ ps -eF
$ ps -ely
프로세스 트리를 출력하는 예:
$ ps -ejH
$ ps axjf
스레드 정보를 표시하는 예:
$ ps -eLf
$ ps axms
보안 정보를 출력하는 예:
$ ps -eo euser,ruser,suser,fuser,f,comm,label
$ ps axZ
$ ps -eM
root 사용자에 의해 실행된 모든 프로세스 출력하는 예:
$ ps -U root -u root u
출력 필드
- USER : 프로세스 소유자의 계정.
- PID : 프로세스 식별자.
- RSS : 프로세스에 의해 사용되는 실제 메모리 사용량.(Kbyte)
- SZ : 프로세스 자료와 스택의 크기.(Kbyte)
- TIME : 현재까지 사용된 CPU 시간.(분, 초)
- TTY : 프로세스의 제어 터미널.
- %CPU : 전체 프로세스를 대상으로 CPU가 해당 프로세스를 실행한 CPU 시간의 백분율.
- %MEM : 프로세스가 사용한 실제 메모리의 백분율.
- START : 프로세스 시작 시간.
- COMMAND : 명령어 이름.
프로세스의 상태코드(STAT)
- D(disk wait) : 디스크 입출력 대기같은 인터럽트 할 수 없는 대기 상태.
- R(running or runable) : 프로세스가 실행중이거나 실행큐에 들어있는 실행 가능 상태.
- S(sleep) : 인터럽트 가능한 대기 상태.
- T(stopped) : 프로세스가 ^Z나 트레이스 명령 등으로 멈춘 상태.
- W(paging) : 가상 메모리 사용 중.(2.6버전 커널부터 사용하지 않음.)
- X(dead) : 실행 종료. 이후 나타나지 않음.
- Z(zombie) : 좀비 프로세스.
BSD 포맷에 의한 추가 상태 코드
- < : 실행 우선 순위 높음.(다른 사용자의 nice 명령에 의한 우선 순위 변경 안됨.)
- N : 실행 우선 순위 낮음.(다른 사용자의 nice 명령에 의해 우선 순위 변경 가능.)
- L : 실시간 실행이나 사용자 입출력에 의해 메모리 락이 걸림.
- s : 세션내에서 실행됨.
- l : 멀티 스레드.
- + : 포그라운드 실행.
2. pstree
프로세스 정보를 트리 형태로 출력.
사용 옵션
-n : PID 순으로 정렬.
-p : 프로세스 명과 PID를 함께 출력.
3.kill
지정된 프로세스에게 종료 시그널을 전송한다.
사용형식
사용옵션
-s : 전송할 시그널의 이름이나 번호 지정.
-p : 전송할 시그널을 출력만 한다.
-l : 시그널 목록 출력.
SIGNAL 종류
- SIGHUP(1) : 제어 터미널이 멈추거나 제어 프로세스가 죽음.
- SIGINT(2) : 키보드로부터의 인터럽트 시그널.
- SIGQUIT(3) : 키보드로부터의 종료 시그널(quit).
- SIGABORT(6) : abort로부터의 중단.
- SIGKILL(9) : kill 시그널. 강제 종료.
- SIGTERM(15) : 프로그램 종료 시그널.
3. top
프로세스의 CPU와 메모리 사용량 등 정보를 실시간으로 모니터링한다.
4. bg
^Z로 중지된 프로세스를 백그라운드 작업으로 변경한다. 명령 실행시 '&'를 함께 실행하면 실행시 백그라운드 작업으로 실행된다.
5. jobs
백그라운드 작업 목록을 표시한다.
6. fg
백그라운드 작업 목록에서 프로세스를 포그라운드 작업으로 되돌린다.