linux/unix programming 프로세스 관리 명령어 문양세 강원대학교 it 대학...

24
Linux/UNIX Programming 프프프프 프프 프프프 프프프 프프프프프 IT 프프 프프프프프프프

Upload: nolen

Post on 05-Jan-2016

78 views

Category:

Documents


7 download

DESCRIPTION

Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교 IT 대학 컴퓨터과학전공. 프로세스란 ?. 프로세스 관리 명령어. 실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원 , 메모리 , 파일 , 입출력 장치와 같은 자원들을 필요로 하는 실행 코드  능동적인 개체 현재 실행 중이거나 곧 실행이 가능한 PCB(process control block) 를 가진 프로그램 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Programming

프로세스 관리 명령어

문양세강원대학교 IT 대학 컴퓨터과학전공

Page 2: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 2

프로세스란 ?

실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원 ,

메모리 , 파일 , 입출력 장치와 같은 자원들을 필요로 하는 실행 코드 능동적인 개체

현재 실행 중이거나 곧 실행이 가능한 PCB(process control block) 를 가진 프로그램

컴퓨터 시스템에 있어서 프로세스는 작업의 단위이며 컴퓨터의 모든 작업은 프로세스들의 집합체로 구성

보다 쉽게 이해하는 방법 : 프로그램이 실행되면 프로세스임

프로세스 관리 명령어

Page 3: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 3

프로세스의 상태

수행 (running)

명령어들이 실행되고 있는 상태 ( 프로세스가 중앙처리장치를 차지하고 있는 상태 )

대기 (waiting)

프로세스가 어떤 사건 ( 입출력 종료와 같은 ) 이 일어나기를 기다리는 상태

준비 (ready)

프로세스가 CPU 에게 할당 (CPU 를 점유할 수 있게 ) 되기를 기다리는 상태

프로세스 관리 명령어

Page 4: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 4

프로세스 생성 (Process Cre-ation)

프로세스는 실행 도중에 , 프로세스 생성 시스템 호출 (fork()) 을 통하여

여러 개의 새로운 프로세스들을 생성 (Shell 이 생성하는 것도

마찬가지임 )

생성하는 프로세스를 부모 프로세스 (parent process) 라 하고 ,

생성된 프로세스는 자식 프로세스 (child process) 라 함

하나의 부모 프로세스는 여러 개의 자식 프로세스를 가질 수 있지만 자식

프로세스는 여러 개의 부모 프로세스를 가질 수 없음

자식 프로세스는 운영체제로부터 직접 자원을 얻거나 부모 프로세스

자원의 일부분을 사용할 수 있음

각 프로세스마다 고유한 정수인 식별자 (PID) 를 가지고 있음

프로세스 관리 명령어

Page 5: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 5

프로세스 종료 (Process Termina-tion)

프로세스는 ( 프로그램의 ) 마지막 문장의 실행을 끝내고 종료하며 ,

운영 체제에게 프로세스의 삭제를 요청

이 시점에서 자식 프로세스는 부모 프로세스에게 이를 알림 (signal

사용 )

부모 프로세스는 다음과 같은 이유로 자식들 중 하나의 실행을 종료시킬

수 있음

• 자식이 할당된 자원을 초과하여 사용할 때

• 자식에게 할당된 일이 더 이상 필요 없을 때

혹은 사용자가 자신의 프로세스를 강제로 종료시킬 수 있음 (kill 명령

어 )

프로세스 관리 명령어

Page 6: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 6

Foreground vs. Background (1/5)

UNIX 시스템은 한번에 여러 작업을 동시에 할 수 있는 다중작업 (Multi-

tasking) 시스템

사용자가 한 명령어를 실행시키고 그 명령의 실행이 종료되어 결과가

출력될 때까지 다른 명령어를 실행하지 않고 기다리는 경우를 fore-

ground 로 수행한다고 함

우리가 지금까지 공부한 대부분의 명령어가 foreground 로 실행됨

반대로 사용자가 하나의 명령어를 실행시킨 후에 그 실행이 끝날 때까지

기다리지 않고 , 다른 명령어를 실행시켜 결과적으로 시스템 내에

복수개의 작업이 동시에 실행되도록 하는 경우를 background 로

수행한다고 함

프로세스 관리 명령어

Page 7: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 7

Foreground vs. Background (2/5)

Background 에서 실행하는 것은 시간이 오래 걸리는 긴 작업일 때 유용

사용자가 명령어를 background 로 실행시키면 , 그 명령의 종료와

관계없이 즉시 프롬프트가 나타나서 다음의 명령어를 실행할 수 가 있음

Background 로 지정하고 싶은 명령어 끝에 “ &” 를 붙여서 해당

명령어를 background 로 실행시킬 수 가 있음

프로세스 관리 명령어

Page 8: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 8

Foreground vs. Background (3/5)

Background 명령 수행의 예 1: 초기부터 Background 로 수행

프로세스 관리 명령어

문자 & 가 의미하는 것은 “이 작업을 background 에서 실행해라”라는 의미이며 , 그

다음 라인은 백그라운드 프로세스의 관리를 편하게 하기 위한 정보로서 [1] 은 Shell

상의 작업제어를 위한 작업 번호 , 25940 은 프로세스 ID 를 나타냄

Page 9: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 9

Foreground vs. Background (4/5)

Background 명령 수행의 예 2: 수행 중에 Background 로 전환

(control-Z(^Z) 및 bg 명령어를 사용하여 background 로 전환 )

프로세스 관리 명령어

Foreground 로 진행 중인 프로세스를 background 로 전환할 경우 ctrl-Z(suspend:프로세스 중지 ) 키를 눌러서 suspend signal 을 발생시켜 작업을 중지시킨 후 , bg 명령어를 입력하면 그 작업이 background 에서 실행됨

Page 10: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 10

Foreground vs. Background (5/5)

Background 및 Foreground 모드 변환의 예

프로세스 관리 명령어

수행 중인 작업을 foreground 로 전환하려면 fg 명령어를 이용하며 , background 에 여러 개의 작업이 실행되고 있다면 jobs 명령어로 그 목록을 확인할 수 있고 , 작업 번호를 이용하여 특정 프로세스를 foreground 로 변환할 수 있음

Page 11: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 11

ps 명령어 (1/4)

ps 명령어는 현재 존재하는 프로세스들이 실행 상태를 요약한 보고서를

출력해 줌

옵션이 주어지지 않으면 프로세스 식별번호 , 명령어가 시작된 터미널 ,

프로세스에 사용된 CPU 시간 , 그리고 명령어 그 자체를 나열

Default 로 ps 는 사용자가 자신의 프로세스들만 출력 , 그러나 많은

경우 현재 시스템에서 실행되고 있는 모든 프로세스들에 대하여 다양한

정보를 포함하는 상태정보를 출력

$ ps [-options]

Note: Option 은 BSD UNIX 와 시스템 V 의 경우 서로 다를 수가

있으므로 , 자세한 사용법은 매뉴얼 (man) 을 사용하여 확인할 것

프로세스 관리 명령어

Page 12: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 12

ps 명령어 (2/4)

ps 명령어의 주요 option

• BSD 계열인 경우 ( 일반적으로 , ps, ps –a, ps –aux 를 이용 )

- a: 모든 사용자의 프로세스를 출력

- u: 프로세스에 대한 좀 더 자세한 정보를 출력

- x: 더 이상 제어 터미널을 갖지 않은 프로세스들도 함께 출력

• System V 계열인 경우 ( 일반적으로 , ps, ps –ef 를 이용 )

- e: 현재 시스템 내에 실행 중인 모든 사용자 프로세스 정보를 출력

- f: 프로세스에 대한 좀 더 자세한 정보를 출력

프로세스 관리 명령어

ps 명령어의 option 과 출력 결과 내용은 BSD UNIX 와 System V UNIX 가 서로

상이하므로 , 이에 대한 자세한 사용법과 출력 결과의 해석에 대해서는 manual($man

ps) 을 사용하여 확인한 후 익히기 바람

Page 13: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 13

ps 명령어 (3/4)

System V 계열인 경우

프로세스 관리 명령어

Page 14: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 14

ps 명령어 (3/4)

System V 계열인 경우

프로세스 관리 명령어

Page 15: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 15

ps 명령어 (3/4)

System V 계열인 경우

프로세스 관리 명령어

Page 16: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 16

ps 명령어 (4/4)

BSD 계열인 경우

프로세스 관리 명령어

Page 17: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 17

ps 명령어 (4/4)

BSD 계열인 경우

프로세스 관리 명령어

Page 18: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 18

ps 명령어 (4/4)

BSD 계열인 경우

프로세스 관리 명령어

Page 19: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 19

ps 명령어 (4/4)

BSD 계열인 경우

프로세스 관리 명령어

Page 20: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 20

kill 명령어 (1/2)

kill 명령은 현재 (background 로 ) 수행중인 프로세스를 강제로

종료시킴( 보다 정확하게는 수행중인 프로세스에 특정 signal 을 전달하는 기능을 수행

함 )

$ kill [-signal] PID

여기에서 PID 는 프로세스 식별번호이고 , signal 은 프로세스에게

전달할 signal 을 나타냄

Default signal 은 15 번인 SIGTERM(terminate) 으로 , 이 signal 은

프로세스에게 수행을 중지하라는 메시지를 전달함

가끔씩 kill 명령어를 사용한 후에도 그 프로세스가 아직 존재하는

경우가 있는데 , 이 경우에는 kill 명령어를 – 9 옵션으로 실행하여

SIGKILL 을 전달하여 강제 종료시킴

프로세스 관리 명령어

Page 21: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 21

kill 명령어 (2/2)프로세스 관리 명령어

Page 22: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 22

kill 명령어 (2/2)프로세스 관리 명령어

Page 23: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 23

sleep 명령어 (1/2)

sleep 명령어는 말 그대로 지정된 시간만큼 실행을 중지함

(shell 이 대기 상태로 기다림 )

$ sleep seconds

sleep 은 여러 명령어를 batch 로 수행할 경우 , 사용자의 의도에 의해

시간적인 gap 을 두기 위하여 유용하게 사용됨

프로세스 관리 명령어

Page 24: Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교  IT 대학 컴퓨터과학전공

Linux/UNIX Program-mingby Yang-Sae Moon

Page 24

sleep 명령어 (2/2)프로세스 관리 명령어