- 프로세스?
현재 실행중인 프로그램을 의미한다.
( 메모리에 적재되어, PCB(Process Control Block)이라는 형태로 OS에 의해 관리되는 상태)
프로세스와 프로그램은 절대 다르다.
시험에 안나오지만 아래 사진은 참고만 해두자.
- 프로세스(process)의 생성
- fork - 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태
기존의 프로세스는 그대로 실행하고 원래의 프로세스와 똑같은 코드를 기반으로 실행한다.
보통 명령어를 내리면 fork형태로 수행된다.
- exec - 원래의 프로세스를 새로운 프로세스로 대체하는 형태
호출한 프로세스의 메모리에 새로운 프로세스의 코드로 덮어 씌움
명령어 앞에 exec를 붙이면 기본 프로세스가 교체되며 새로운 프로세스가 할당된다.
- 프로세스의 종류
- 포어그라운드 프로세스(전면 처리) = 명령 입력 후 수행종료까지 기다려야한다.
- ★백그라운드 프로세스(후면 처리) = 사용자 입력에 관계없이 실행된다.
프로세스 실행 명령 뒤에 &만 추가로 붙여 실행 하면 된다 ( 다중 작업시 유리)
- ★★작업 상태 확인
- jobs - 작업이 중지된 상태, 백그라운드로 진행상태 표시
jobs[옵션][작업번호]
-l : 프로세스 그룹 ID를 state 필드 앞에 표시
-n : 프로세스 그룹 중, 대표 프로세스ID 표시
-P : 프로세스 id를 한 행씩 표시
- pstree : 실행중인 프로세스들을 트리 구조로 나타냄
pstree[옵션]
-p : 프로세스 ID 표시
-n : 프로세스 ID 정렬해서표시
-a : 명령행 인자를 포함한 정보를 트리 구조에 표시
-h : 현재 프로세스와 부모 프로세스를 음영으로 강조하여 표시
- ps : 현재 실행중인 프로세스 상태
ps[옵션]
-a : 현재 실행중인 모든 프로세스 출력
-U : 특정 사용자 중심으로 프로세스 확인
-u : 사용자 이름과 프로세스 시작 시간 출력
-x : 접속된 터미널 뿐 아니라 사용되고 있는 모든 프로세스 출력
-e : 모든 프로세스 정보 출력(소유자 정보X)
-ef : 모든 프로세스에 대한 정보를 full-format으로 볼 수 있다.(소유자 정보O)
-fp : 특정 프로세스의 pid를 이용해 확인
-l : 자세한 정보 출력
- ★ps가 보여주는 column들의 의미
- USER : 프로세스를 소유한 사용자
- PID : Process ID
- %CPU : cpu사용률
- $MEM : memory 사용률
- VSZ: 가상 메모리 사용량
- RSS : 실제 메모리 사용량
- TTY : 프로세스를 컨트롤 하는 터미널
- STAT : 현재 프로세스의 상태
- START : 프로세스 시작날
- TIME : 프로세스가 지금까지 사용한 CPU시간
- COMMAND: 프로세스 실행할 떄 사용된 CMD
- ps가 보여주는 프로세스 상태(stat)
- S : interruptible sleep (event를 완료하기 위해 기다리는 상태)
- R : Running or runnable (on run queue)
- I : Idle kernel thread
- Z : Zombie 프로세스 상태
- D: Uninterruptible sleep, 입출력을 기다리는 상태
- T : job control signal에 의해 멈춰있는 상태
- kill : ps 종료.
kill[옵션][시그널 번호 or 이름][PID or 작업번호]
-l : 시그널 종류 나열
-s + 시그널 번호 : 전달할 시그널의 종류 지정
-1 -HUP : 프로세스를 제작
-9 : 프로세스를 강제로 종료
-15: 프로세스를 종료
- killall : 여러개의 프로세스를 한 번에 종료.
killall[옵션][프로세스명]
-g : 그룹을 지정하여 프로세스 종료
-i : 프로세스 종료 전 확인 메세지 표시
-l : 시그널 목록 표시
-v : 상세 정보 표시
- nice : (새로운)★프로세스 우선 순위 확인, 변경
-20(가장 높은 우선순위)~19(가장 낮은 우선순위)까지 우선순위가 있고 기본값은 10이다.
- renice : ★이미 실행중인 프로세스 우선순위 변경
renice[옵션][NI값][옵션명]
-p : 프로세스ID지정
-u : 사용자명 지정
-g : 프로세스의 GID 지정
- nohup : 프로세스가 중단되지 않고 백그라운드에서 작업 수행
로그아웃 또는 터미널 창이 닫혀도 계속 실행되는 프로세스
백그라운드로 작업될 수 있도록 뒤에 '&'표시
- top : 시스템의 운영 상태를 실시간으로 모니터링.
top[옵션][PID]
-d 시간 : 실시간 화면 출력 시간 지정(초단위)
-p PID : 모니터링 할 프로세스 PID지정
-h 또는 ? : 도움말
-i : 좀비 프로세스 감춤 또는 보여줌
-n : 지정된 개수만큼 프로세스 화면에 표시
-r : renice값 변경하여 실행 우선순위 조정
-k PID : 지정된 PID 종료
q or Ctrl_C : top 실행 종료
- 프로세스 식별 함수
- ★프로스세스 PID (Process ID) -각각의 프로세스들은 실행이 된 후, 운영체제에 의해서 식별받은 고유 ID를 가진다.
관련 프로세스가 모여 프로세스 그룹(Process Group)을 만들게 된다.
PID는 0번 부터 시작하게 된다.
0 : 스케줄러(Sched)
1 : init 으로 프로세스를 실행시키면 자동으로 할단된다.
- ★PPID(Parent Process ID) : 0번을 제외한 모든 프로세스는 자신을 호출한 부모 프로세스
- 프로세스 그룹 PGID(process group id) - 프로세스를 묶은 것
PGID 내부에 하나의 프로세스가 대표 PID를 부여받고, 이 리더 프로세스가 변하면, PGID 또한 변경된다.
- siganl : 프로세스에 이벤트 발생을 전달해주는 소프트웨어 인터럽트. ( ★kill -l 에서 리스트 확인 가능)
예시 ) 시그널번호.시그널 = 설명
- 1.SIGHUP = 터미널과 연결이 끊어졌을 때
- 2.SIGINT = Ctrl + c 입력시 : 종료
- 3.SigQUIT = Ctrl_l 입력시 : 코어덤프
- 6.SIGAMRT = abort(비정상 종료 함수)에 의해 발생
- 9.SIGKILL = 프로세스 강제 종료 시
- 13.SIGPIPIE = 종료된 소켓에 쓰기 시도
- 14.SIGALRM = 알람 타이머 만료 시 발생
- 15.SIGTERM = kill 시스템 호출 시 발생
- 16. SIGCHLD = 자식 프로세스 종료 시 발생
- 17. SIGCHLD = 중지된 프로세스 실행 시 발생
- 18. SIGCONT = 중지된 프로세스 실행 시 발생
- 19. SIGSTOP = SIGCONT 시그널 받을 때 까지 종료
- 20. SIGSTP = Ctral+z 입력 시 : 프로세스 대기
'리눅스 > 리눅스 마스터 2급' 카테고리의 다른 글
리눅스 마스터2급 - 명령어 정리(1) man,passwd,useradd 등 (2) | 2023.02.16 |
---|---|
리눅스 well-known port (0) | 2023.01.15 |
[리눅스 마스터 2급] X-윈도우(X-window) (0) | 2023.01.14 |
[리눅스 마스터 2급] 쿼터(Quota) (0) | 2023.01.14 |