컴퓨터의 CPU에서 실행되는 모든 프로그램
이미지출처 - https://media.geeksforgeeks.org/
프로세스의 실행 방식은 크게 포그라운드와 백그라운드가 있다.
포그라운드 프로세스
화면에서 프로그램 실행이 눈으로 직접 확인할 수 있는 상태의 프로세스 구동
사용자와 상호작업으로 작업수행
백그라운드 프로세스
프로세스가 실행되었지만 직접 눈으로 확인할 수 없는 상태로 작업수행
ex) 백신 프로그램, 서버 데몬 등
CPU에서 처리하고자 하는 작업 구분을 위한 고유 식별방법
처리해야할 프로세스 순서를 결정
현재 실행되는 백그라운드 프로세스가 CPU를 점유하여 작업을 수행할때의 순차번호
프로세스는 하나의 독립된 프로세스만이 구동되는 것은 아님
먼저 실행한 메인 프로그램을 부모 프로세스, 나중에 메뉴에서 선택하여 실행한 프로그램을 자식 프로세스라고 한다.
부모 프로세스는 PPID(Parent Process ID)를 가지며, 자식 프로세스는 PID(Process ID)를 가지고있다.
자식 프로세스가 종료되기 전에 부모 프로세스가 종료되면 자식 프로세는 강제종료된다.
순차적으로 종료되지 않고, 부모 프로세스를 종료할 경우 자식 프로세스는 강제종료된다.
이러한 상황일때 자식 프로세스는 종료되었음에도 불구하고 PCB 목록에 남아있어 살아있는 프로세스로 간주되는 것
순차적 실행 : 부모 프로세스 -> 자식 프로세스
순차적 종료 : 자식 프로세스 -> 부모 프로세스
ps : process의 약어, 현재 실행 중인 프로세스의 상태확인
-ef, -eux 옵션 많이 사용
-eux 옵션 출력시 확인가능한 정보
vsz 가상메모리크기
rss 물리적 메모리 크기
ty 프로세스 시작되고잇는 터미널
stat 프로세스 현재상태 -> 찾아보기
start 프로세스 시작 시각
time 현재까지 사용된 cpu 시간
command 프로세스가 실행한 명령행
pgrep : grep 명령으로 특정 프로세스 정보 검색
ps -fp $(pgrep -x bash) : 시스템에 접속된 모든 사용자 검색
ps -fp $(pgrep -x cskisa bash) : cskisa 계정 검색
kill : 프로세스 종료를 위해 지정한 시그널을 해당 프로세스에 전달
kill [시그널] pid
시그널 | 의미 |
---|---|
-2 | 인터럽트 시그널 전송, (ctrl + r)과 동일 |
-9 | 프로세스 강제종료 |
-15 | 프로세스가 관련 파일을 정리 후 종료 |
-15 시그널을 사용하더라도 종료되지 않는 프로세스도 있다.
sleep : 지정한 시간동안 멈출 수 있다. 일시 정지
top : 프로세스 모니터 도구
NI : nice 프로세스의 우선순위(-20 ~ 19, default 10) ⭐
: -20이 우선순위가 가장 높음
: 일반 사용자는 우선 순위값을 낮출 수 없음
: ex) nice -n -20 ps -l
: ex) renice -n nice값 PI //해당하는 우선순위로 값이 변경
pstree : 프로세스간의 계층 구조를 출력하는 명령어
-p : 각 프로세스의 PID를 함께 출력
free : 시스템의 메모리 정보를 출력하는 명령어
- -m : mb (b/k/m/g)
- -s{초} : 입력한 시간마다 free 실행(모니터링)
jobs : 백그라운드 프로세스의 목록 확인(작업 번호) 명령어
fg 작업번호 : 백그라운드로 실행되고 있는 프로세스를 -> 포그라운드 방식으로 전환 명령어
bg 작업번호 : 수행이 멈추었던 백그라운드 프로세스를 다시 백그라운드 방식으로 실행 명령어