본문 바로가기

Learning/ └Essential & Admin

리눅스 프로세스 관리_Unit14

프로세스

프로세스란

/proc/PID

프로세스는 프로그램이 메모리에 적재되어 실제로 실행되고 있는 상태를 의미한다.

프로세스는 컴퓨터 내에서 실행중인 프로그램의 인스턴스 이다.

여러 명의 사용자들에 의해 공유되고 있는 응용프로그램은 일반적으로 각 사용자들의 실행 단게에서

하나의 프로세스를 갖는다. 프로세스는 자프로세스라고도 불리는 서브프로세스를 시작시킬 수 있다.

 

 

(1) 자식 프로세스(Child Process) & 부모 프로세스(Parent Process)

- PID(Process Ident if ication) : 프로세스가 시작할 때 할당받는 프로세스 식별번호

- PPID(Parent Process Identif ication) : 부모 프로세스 식별번호 (서브 프로세스를 실행시킨 프로세스)

 

 

# ps

 

# bash

# ps -f

 

PID=17086 (

-----------+

  l PID=17106 , PPID=17086 (

  +----------------------------

#ps -ef | more

 

UID     :프로세스를 실행시킨 사용자 , 프로세스 주인

PID     :프로세스 아이디 ,  프로세스 식별번호

PPID    :부모 프로세스 아이디

C        :현재 사용되지 않는 필드

STIME  :Start Time, 프로세스 실행 시작 시간

TTY     :제어 터미널, 프로세스가 실행된 터미널

TIME   :CPU 사용 누적 시간

CMD   :명령어(옵션 + 인자 포함)

 

pstree | head -20 (ps를 tree구조로 출력)

 

 

프로세스의 정보

 

(1) 프로세스 정보가 존재하는 디렉터리

 

 

gedit & ( 새로운 명령 ) 후 ps 결과값 확인

 

 

/proc 라는 디렉터리에 각 프로세스에 해당되는 PID디렉터리 들이 있다.

 

 

 

 

 

 

 

 

프로세스 관리

쉘 프로프트에 명령어를 입력해서 포그라운드 상태($ cat > testfile)로 프로그램을 실행시킴

백그라운드는 명령행 끝에 &를 붙여서 사용하면 쉘 프롬프트가 떨어지고 대신 프로세스는 사용자가

보지 않는 상태로 실행된다.

 

백그라운드 프로세스 확인 : $ bg    (foreground)

백그라운드 프로세스 전환 : $ fg     (background)

 

(1)프로세스 실행

fg) # ls

bg) # ls &

 

(fg 형태로 프로그램이 실행되면)

# gedit

명령어를 수행해도 출력결과가 보이지 않는다

부모 프로세스가 종료되면 자식 프로세스가 종료된다

(bg 형태로 프로그램이 실행되면)

# gedit &

명령어 수행 출력결과가 정상적으로 수행된다

부모 프로세스가 종료되어도 자식 프로세스가 종료되지 않는다

! ls 같은 경우 fg 형태 이지만 끝이 나기 때문에 정상적 수행이 가능하다

 gedit 같은경우 끝나지 않기 때문에 fg 형태로는 터미널 에서 쉘 수행이 불가능하다

GUI 툴 등 수행이 오래 걸리는 프로그램들은 백그라운드 로 실행시킨다

 

프로그램 실행

 

 

 

포그라운드 & 백그라운드 실행 ( 전환 )

 

<CTRL + Z> fg상태에서 CTRL + Z 으로 STOP상태로 둔다

 

jobs

bg 1

fg 1 // CTRL + C

 

 

 

 

(2)프로세스확인

# ps -ef | grep xinetd

# ps aux | grep xinetd

 

명령어 형식

# ps             현재 터미널에서 실행된 프로세스 정보 확인

# ps -l          현재 터미널에서 실행된 프로세스의 간략한 정보 확인

# ps -U         특정한 사용자가 실행시킨 프로세스 정보 확인 ( ps -U user01)

# ps -t pts/5  해당 터미널에서 실행시킨 프로세스의 간략한 정보 확인

# ps -a         현재 터미널에서 실행된 프로세스의 자세한 정보 확인

# ps -au        다른 사용자의 프로세스 상태도 자세히 표시

# ps -aux      원래 동작중인 것 포함하여 전체 프로세스의 자세한 정보 확인

 

# ps aux | grep xinetd    (# ps -ef | grep xinetd)

# ps -aux | grep xinetd

 

# ps -e        정보를 전부다 출력

# ps -f        정보를 좀더 길게 출력

# ps -ef      정보를 좀더 길게 전부다 출력

 

 

(3)프로세스 종료

# kill PID            ( # kill -15 PID, # kill -TERM PID)

# kill -[1 | 2 | 9 | 15] PID PID

# killall httpd

 

kill -2    INT PID

kill -9    KILL PID

 

 

 

 

# kill -l

 

SIGHUP   : 프로세스 재시작 kill -1

SIGINT    : 인터럽트(CTRL + C) kill -2
SIGKILL   : 강제종료 kill -9
SIGTERM : 정상종료 kill -15

kill 명령에 아무 신호도 입력하지 않으면 15번 신호인 SIGTERM을 보낸다

 

 

 

 

 

 

 

프로세스 모니터링

반복적 확인 하는 작업

 

(1)top

-ps와 같은명령어, 차이점은 top는 실시간 모니터링 ps는 한번 확인

# top                        GUI # gnome-system-monitor

# tail -f /var/log/messages        GUI # gnome-system-log

 

# top -u oracle            사용자가 실행한 프로세스만 모니터링

# top -u root

# top -u oracle

# top -u wasuser

# top -p PID                지정된 PID 번호만 모니터링

 

 

top 명령어 해석

uptime -

 

 

 

 

사용자 별로 모니터링

 

# top -u fedora

 

 

 

 

몇개의 프로세스만 모니터링

 

# top -p 1

 

 

 

 

 

 

 

 

 

 

 

 

(2)gnome-system-monitor

# gnome-system-monitor

# gnome-system-log

 

 

 

 

 

 

 

 

 

free 메모리 사용량 출력

 

 

 

 

(3)lsof

# lsof

# lsof -i            소켓

# lsof -p PID

# lsof -c senmail

 

 

(4)pamp

프로세스가 사용하고 있는 메모리의 주소를 확인

ps -ef | grep sendmail

pmap PID

 

 

 

 

 

 

 

(5)pstree

실행중인 프로세스 상태를 트리 구조로 보여주는 명령어

 

 

 

 

 

 

 

 

 

(6)nice/renice

프로세스를 실행하는데 있어서 프로세스에게 우선권을 부여 할 수 있다.

일반적으로 프로세스들은 설정된 우선권 순위대로 실행이 되는데

nice명령을 사용하게 되면 프로세스의 실행 우선권을 바꿀 수 있다. 우선권 순위는 -20에서

19 까지의 범위를 가지며 nice값이 적을수록 우선순위를 값이 높아지게된다

 

프로세스의 우선순위: 프로세스가 운영체제의 CPU를 선점할 수 있는 권한

 

nice    : 프로그램을 실행 할 때 프로세스의 우선순위를 성정할 수 있는 CMD

renice : 실행중인 프로그램의 우선순위를 조정할 수 있는 CMD

 

ps -l

PRI : 숫자가 크면 우선순위가 낮음

NI : nice값

 

 

 

 

 

 

 

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

프로세스 관리

 

- 프로세스 정보(/proc/PID/*)

PID, PPID, Contol Terminal, ...

- 프로세스 관리

프로세스 실행

(fg) # ls

(bg) # ls &        (GUI프로그램,오래걸리는프로그램 실행시 터미널을 계속 사용할떄)

프로세스 확인

# ps -ef | grep xinetd

# ps aux | grep xinetd

프로세스 종료

# kill [-1|-2|-9|-15] PID PID

잡 실행

(fg)  # ls

(bg) # ls

잡 확인

# jobs

# fg <Job ID>

# bg <Job ID>

잡 종료

# kill %1 ( % : Job ID)

- 프로세스 모니터링

top CMD

# top (cPu/Mem)

# top -u fedora

# top -p PID,PID,PID

-------------------------------------------------------------

lsof CMD

# lsof

# lsof -p PID

# lsof -c sshd

pmap CMD

pstree CMD

nice/renice CMD

# nice -(-20 ~ 19) CMD

# nice -n (-20 ~ 19) CMD

# renice (-20 ~ 20) PID

# renice -n (-20 ~ 20) PID

 

# nice -10 /root/bin/backup.sh &

# renice 10 PID

-------------------------------------------------------------