우당탕탕 개발자 되기
Process 본문
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 |