320x100
320x100

Chapter 3. 프로세스 관리

 

프로세스 : 실행중인 프로그램. PID를 통해 구분. backgroundforground로 구분

fork : 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스 실행

exec : 기존의 프로세스를 새로운 프로세스로 대체

init : PID 1번을 할당받는 최초의 프로세스. fork방식으로 필요한 프로세스들을 실행

 

 

 

SIGNAL : 프로세스 끼리의 통신을 위한 메시지

1. SIGHUP (터미널 접속 해제. 데몬 관련 환경설정후 적용을 위한 프로세스 재시작)

2. SIGINT (키보드 인터럽트. Ctrl+C)

3. SIGQUIT (키보드 인터럽트. Ctrl+\)

9. SIGKILL (강제종료)

15. SIGTERM (정상 종료. kill 명령의 기본 시그널)

18. SIGCONT (Continue. STOPSTP에 의해 정지된 프로세스 재실행)

19. SIGSTOP (터미널에서 입력된 정지 시그널)

20. SIGSTP (실행 정지 후 다시 실행을 위해 대기. Ctrl+z)

 

데몬 : 주기적이고 지속적인 서비스 요청을 처리하기 위한 백그라운드 프로세스

standalone : 메모리에 항상 상주하면서 서비스를 처리하는 데몬 방식

inetd : inetd 데몬에 의해 필요할 때 마다 실행되고 종료되는 데몬 방식

 

 

/etc/rc.d/init.d : 시스템에서 제공되는 서비스에 대한 시작 및 중지를 수행하는 스크립트가 포함된 디렉터리

ex) /etc/rc.d/init.d/httpd stop : 아파치 웹 데몬 중지 (service 명령어로도 가능)

 

 

/etc/rc.d/rc0.d ~ rc6.d

: 실행 레벨에 따라 필요한 서비스만 실행하기 위한 디렉터리

: init 프로세스가 실행레벨 5로 부팅하면 /etc/rc.d/rc5/dS로 시작하는 모든 링크들을 번호 순서대로 실행

: 각 서비스는 start인자를 이용해 실행됨. 마지막 스크립트 실행 후에는 다음 부팅절차 진행

 

[K | S] [번호] [inet.d_이름] : rc0.d ~ rc6.d 디렉터리 내의 파일형식

K : Kill. 실행하지 않을 서비스

S : Start. 해당 레벨에서 실행되더야 하는 서비스

번호 : 순차적인 정수 2자리 번호

init.d_이름 : 실행할 스크립트명

 

 

 

ps [option] : 현재 동작중인 프로세스의 상태 출력

a : 터미널과 연관된 프로세스 출력 (BSD계열)

u : 소유자를 기준으로 프로세스 출력

x : 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스 출력

l : 프로세스의 자세한 정보 출력. PRI NI 값 출력

e : 해당 프로세스에 관련된 환경변수 정보도 함께 출력

f : 프로세스 간 상속관계를 트리구조로 출력

p : 특정 PID 지정 (BSD계열)

-A, -e : 모든 프로세스 출력 (=A SystemV계열)

-a : 세션리더 (일반적으로 로그인 셸)을 제외하고 터미널에 종속되지 않은 모든 프로세스 출력

-f : 유닉스 스타일로 출력. UID, PID, PPID 등 출력

-C 프로세스명 : 지정한 프로세스만 출력

-o : 출력 포맷 지정. pid, tty, time ..

-p : 특정 PID지정 (SystemV계열)

-u : 특정 사용자의 프로세스 정보 확인

 

 

 

ps 주요항목

USER / UID : 프로세스 소유자 이름 (BSD / System V)

PID : 프로세스 식별 번호

%CPU / %MEM : CPU / 램 사용비율 추정치 (BSD)

VSZ : 가상메모리 용량

RSS : 실제 메모리 사용량

TTY : 프로세스와 연결된 터미널

STAT : 프로세스의 현재 상태 (코드로 표시)

START / STIME : 프로세스 시작 시간 또는 날짜 (/System V)

TIME : CPU 사용시간

COMMAND : 프로세스 실행 명령행

C / CP : 짧은 기간 동안의 CPU 사용률 (System V / BSD)

F : 프로세스 플래그 (1: exec없이 fork된 경우, 4: 슈퍼 유저 권한 사용자)

PPID : 부모 프로세스의 PID

PRI : 실제 실행 우선순위

NI : nice 우선순위 번호

 

 

 

pstree [option] : 프로세스의 상태를 트리 구조로 출력. 좌측 부모 프로세스. 우측 자식 프로세스

-a : 각 프로세스 명령행 인자까지 출력

-h : 조상 프로세스까지 하이라이트로 강조하여 출력

-n : 프로세스 이름 대신 PID로 출력

-p : PID 함께 출력

top [option] : 동작중인 프로세스의 상태를 실시간으로 출력. CPU, 메모리, 부하 상태 등까지 확인 가능.

-d 갱신지점 : 갱신시간 설정 (초단위)

-p : 특정 PID를 가지는 프로세스 모니터링

-b : 배치모드 옵션. 다른 프로그램이나 파일에 데이터 전송

-n : top 명령의 실행 횟수 지정

 

 

 

top 주요 항목

PID / USER / PR : 프로세스 아이디 / 소유자 / 우선순위

NI : Nice Value 우선순위

VIRT : 작업에 의해 사용된 가상메모리 총 사용량

RES : 프로세스가 사용하는 실제 메모리양

SHR : 프로세스가 사용하는 공유 메모리양

S : 현재 프로세스의 상태

%CPU : CPU사용량

%MEM : 메모리 사용량

TIME+ : 프로세스가 시작하여 사용한 총 CPU 시간 (0.001초 까지)

COMMAND : 프로세스를 실행한 명령어

 

 

 

kill [option] [signal] [PID or %Job_Number] : 프로세스에 시그널 전송.

-l : 시그널의 종류 출력

-s 시그널 : 시그널 이름 지정

ex) kill 9 756 757 758

ex) kill HUP 10118

 

 

killall [option] 프로세스명 : 같은 데몬의 여러 프로세스를 한 번에 종료

-l : 시그널 종류 출력 (--list)

-w : 시그널을 받은 프로세스들이 종료될때까지 대기 (--wait)

-v : 시그널이 전송된 결과 출력 (--verbose)

-s 시그널 : 시그널 이름 지정 (--signal)

-u 사용자명 : 특정 사용자의 프로세스 지정 (--user)

 

 

jobs [option] : 백그라운드로 실행중인 프로세스 및 중지된 프로세스 목록 출력

-l : PID를 추가로 출력

 

fg [%Job_Number] / fg [Job_Number] : 백그라운드로 수행중인 작업을 포어그라운드로 전환

bg : 포어그라운드 프로세스를 백그라운드로 전환. Ctrl+Z 후 일시중지 시킨 다음 실행

 

nice [option] 프로세스명 : NI값이 증감된 프로세스 추가 실행

-n / -/ --adjustment=: 프로세스의 설정된 NI값 증감. 옵션 미설정시 10지정

ex) nice 10 bash / ex) nice 10 bash

 

 

renice [option] NIPID : 실행중인 프로세스의 우선순위 변경

-n : NI값 지정 (--priority)

-p : PID 지정 (--pid)

-u : 사용자 이름 지정 (--user)

-g : 프로세스의 그룹 ID 지정 (--pgrp)

-v : 버전 확인 (--version)

-h : 사용법 확인 ()

 

 

 

nohup 명령어 : 명령어를 백그라운드 프로세스로 실행하면서 사용자가 로그아웃하거나 터미널이 닫혀도 계속 수행

ex) nohup tar cvf source.tar /opt/src &

 

 

pgrep [option] [pattern] : 프로세스 이름을 기반으로 PID 출력

-u : 특정 사용자가 실행시킨 PID 출력

-U : UID 기준으로 PID 출력

-g : 특정 그룹이 실행시킨 PID 출력

-G : GID 기준으로 PID 출력

-t : 특정 터미널에 실행중인 PID 출력

-l : PID외 프로세스명 출력

 

 

pkill [option] [pattern] : 프로세스명을 통한 시그널 전송

-pgrep와 동일 (-l 제외)

 

 

PRI

: 커널이 사용하는 우선순위 항목. 0~139까지의 범위. 일반적으로 0~99까지는 시스템에 예약.

: 인위적인 조작이 불가하고 시스템 상황에 따라 적절히 부여

NI : 사용자가 조작하는 우선순위 값. -20~19까지의 범위. root만이 값 조절 가능

 

/proc : 시스템에 동작 중인 프로세스의 상태정보와 기타 시스템 및 하드웨어 정보 확인

: 새로운 프로세스 생성시 /PID로 명명된 서브 디렉터리가 생성되며 프로세스에 관한 정보 저장

 

 

 

/proc/PID 구성요소

cmdline : 명령행 옵션 정보

cwd : 작업 디렉터리

environ : 프로세스 환경 정보

exe : 프로세스를 실행시킨 명령어

fd : 파일 지정자(file descriptor)에 대한 정보

maps : 실행명령과 라이브러리 파일의 메모리 맵 정보

mounts : 시스템의 마운트 정보

root : 프로세스의 루트 디렉터리

stat : 프로세스의 상태

statm : 프로세스의 메모리 상태 정보. size~페이지수 등..

status : 프로세스의 상태. 사람이 보기 쉬운 형태

 

 

 

/proc 주요 정보 파일 및 디렉터리

acpi : 전원 관련 정보 디렉터리

bus : pci 등의 bus 정보 디렉터리

cmdline : 부팅시 실행되는 커널 관련 옵션 정보

cpuinfo : CPU에 대한 정보

devices : 현재 커널에 설정된 디바이스 드라이버의 리스트 정보

dma : 시스템에서 사용중인 DMA 정보

filesystems : 커널에 설정된 파일 시스템의 리스트 정보

interrupts : 시스템에 사용중인 인터럽트(IRQ) 정보

iomem : 메모리에 번지별로 할당된 리스트 정보

ioports : 시스템에서 사용 중인 I/O 주소

kcore : 시스템에 장착된 물리적 메모리 이미지. 프로그램의 비정상 종료너 디버깅시 유용

loadavg : 최근 1, 5, 15분 간의 평균 부하율 기록

meminfo ~ mdstat까지

crontab [option] / crontab [option] 파일명 : 주기적인 작업 등록

-l : crontab에 설정된 내용출력

-e : crontab의 내용 작성 및 수정

-r : crontab 설정 파일 삭제

-u : root 사용자가 특정 사용자의 crontab 파일 다룰 때

-i : crontab 설정 파일 삭제전 질의 수행

ex) 0 12 * * 1-5 /home/posein/work.sh

 

300x250
728x90