Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발자 되기

Process 본문

LINUX

Process

KimMINHun 2021. 3. 27. 16:22

Process

: 실행 중인 프로그램을 프로세스 라고 한다.

각 프로세스는 유일한 프로세스 번호 PID 를 갖는다.

각 프로세스는 부모 프로세스에 의해 생성된다.

 

프로세스는 프로세스 ID 이외에 프로세스의 사용자 ID(UID) 와 그룹 ID(GID) 를 갖는다.

- 해당 프로세스를 실행시킨 사용자의 ID와 사용자의 그룹 ID

- 해당 사용자 및 그룹의 권한을 상속 받아, 프로세스가 수행할 수 있는 연산을 결정하는데 사용한다.

 

id 명령어

$ id [사용자명]

: 사용자의 실제 ID와 유효 사용자 ID, 그룹 ID 등을 보여준다.

 

프로세스의 실제 사용자 ID(real user ID)

- 프로세스를 실행시킨 사용자의 ID로 설정된다.

- 프로세스의 실제 사용자 ID는 chan이 된다.

 

프로세스의 유효 사용자 ID(effective user ID)

- 현재 유효한 사용자 ID

- 보통 유형 사용자 ID 와 실제 사용자 ID는 같다.

- 새로 파일을 만들 떄 or 파일의 접근권한을 검사할 때 주로 사용된다.

- 특별한 실행파일을 실행 할 때 유효 사용자 ID는 달라진다.

 

set-user-id 실행권한

- set-user-id가 설정된 실행 파일을 실행하게 되면 프로세스의 유효 사용자 ID는 그 실행 파일의 소유자로 바뀐다. 

프로세스는 실행되는 동안 그 파일의 소유자 권한을 갖게된다.

-실행권한 설정

$ chmod 4755 or $chmod u+s 파일

 

set-group-id(set group ID upon execution) 실행권한

- 실행되는 동안에 파일 소유자의 그룹을 프로세스의 유효 그룹 ID로 갖게된다.

- set-group-id 실행권한은 8진수 모드로는 2000으로 표현된다.

- 실행권한 설정

$ chmod 2755 or $ chmod g+s 파일

 

프로세스 상태 보기 ps(process status)

$ ps [-옵션]

: 현재 사용자가 생성한 프로세스 목록을 간단하게 출력

$ ps -aux

: 모든 프로세스 출력, 메모리 cpu 사용량, 프로세스 상태

$ ps -ef

: 모든 프로세스 출력, 자식 프로세스 개수, 부모 프로세스 ID, 부모 자식간의 관계를 파악하기 더 편리하다.

$ ps -aux --sort[+|-] key

: key 로 지정된 필드순으로 정렬하여 출력, default : PID

* + | - : 오름차순 혹은 내림차순, default : 오름차순

* ex) $ ps -aux --sort user : 사용자 순으로 정렬.

$ ps -aux --sort -rss : 실제 메모리 사용량이 많은 순으로 정렬

 

ps 출력정보

항목 의미
UID 프로세스를 실행시킨 사용자 ID
PID 프로세스 번호
PPID 부모 프로세스 번호
C 프로세스의 우선순위
STIME 프로세스의 시작 시간
TTY 명령어가 시작된 터미널
TIME 프로세스에 사용된 CPU 시간
CMD 실행되고 있는 명령어(프로그램) 이름

특정 프로세스 리스트 pgrep

$ pgrep [옵션] [패턴]

: 패턴에 해당하는 프로세스들만을 리스트 한다.

-l : PID와 함께 프로세스의 이름을 출력한다.

-f : 명령어의 경로도 출력한다.

-n : 패턴과 일치하는 프로세스들 중에서 가장 최근 프로세스만을 출력한다.

-x : 패턴과 정확하게 일치되는 프로세스만 출력한다.

 

프로세스 트리 출력

$ pstree

: 실행중인 프로세스들의 부모, 자식 관계를 트리 형태로 출력한다.

 

Process: Control

쉘과 수행된 프로세스 간의 관계

1) 프롬프트를 내고 명령어를 입력받는다. -> 2) 자식 프로세스를 생성한다. -> 3) 자식 프로세스에게 명령어를 실행시킴

 

쉘에 메세지 출력

$ echo 메시지

: 메시지를 화면에 출력함

 

쉘 재우기

$ sleep 초

: 명시된 시간만큼 프로세스 실행을 중지시킨다

 

강제종료 ctrl-c            실행중단 ctrl-z

$ 명령어                    $ 명령어

^C                           ^Z

                                [1] + Stopped 명령어

 

전면처리(일반적인 사용법)

- 입력된 명령어를 전면에서 실행하고 쉘은 명령어 실행이 끝날 때까지 기다린다.

- $ 명령어

후면처리

- 명령어를 후면에서 실행하고 전면에서는 다른 작업을 실행하여 동시에 여러 작업을 수행할 수있다.

- 사용법 : 명령어 뒤에 '&'를 붙여 실행    $ 명령어 &

- 출력 : 입력 대기 상태인 shell process가 foreground 에서 수행 중일 때 background에서 출력되는 메세지는 바로 shell 에 표시한다.

 

후면 작업 확인

$ jobs [%작업번호]

: 후면에서 실행되고 있는 작업들을 리스트 한다. 작업 번호를 명시하면 해당 작업만 리스트 한다.

 

후면 작업을 전면 작업으로 전환$ fg %작업번호: 작업번호에 해당하는 후면 작업을 전면 작업으로 전환시킨다.

 

전면 작업의 후면 전환

$ bg %작업번호

: 작업번호에 해당하는 중지된 작업을 후면 작업으로 전환하여 실행사용법 : ctrl-z 키를 눌러 전면 실행중인 작업을 먼저 중지 시킨 후 bg 명령어 사용하여 후면 작업으로 전환

 

프로세스 끝내기

$ kill 프로세스 번호

$ kill %작업번호

: 프로세스 번호(작업번호)에 해당하는 프로세스를 강제로 종료시킨다.

 

프로세스 기다리기

$ wait [프로세스번호]

: 프로세스 번호로 지정한 자식 프로세스가 종료될 때 까지 기다린다, 지정하지 않으면 모든 자식 프로세스가 끝나기를 기다린다.

'LINUX' 카테고리의 다른 글

Find and Grep  (0) 2021.04.08
Redirection  (0) 2021.03.28
Privilege  (0) 2021.03.26
File  (0) 2021.03.25
Directory  (0) 2021.03.25