320x100
320x100

프로세스

- 실행중인 프로그램

 : 사용자 프로세스와 시스템 프로세스로 나뉨 (실행 주체에 따름)

 

- 자식 프로세스

 : 프로세스에 의해 생성된 프로세스

 

- 부모 프로세스

 : 자식 프로세스를 생성한 프로세스

 

- 리눅스의 시스템 프로세스

 : systemd (모든 시스템 프로세스의 부모 프로세스)

 : kthread (모든 스레드의 부모 스레드)

 

 

 

PID (Process ID)

- 프로세스의 생성순간 커널에서 부여하는 고유번호

 : OS에서 PID를 통해 프로세스 식별

 : PID는 부팅때마다 항상 달라짐

- systemd : 1번

- kthread : 2번

 

 

 

PCB (Process Status Block)

- 프로세스 수행에 관련된 모든 정보를 저장하는 프로세스 상태 블록

 : 상태정보, 우선순위, 할당 받은 자원 등 저장

- 프로세스의 상태

 : 준비 (CPU가 실행할 수 있는 상태)

 : 실행 (CPU가 실행하고 있는 상태)

 : 대기 (CPU의 수행이 중지된 상태)

- 문맥교환

 : CPU가 프로세스를 번갈아가면서 실행하면서 PCB에 정보를 저장하는 과정

 

 

 

프로세스의 종류

- 데몬 프로세스

 : 백그라운드에서 대기하다 서비스 요청이 있을 때 응답하는 프로세스

 : 주로 네트워크 서비스 수행을 위해 쓰임

- 고아 프로세스

 : 부모 프로세스가 소멸된 프로세스

- 좀비 프로세스

 : 종료되지 않은 프로세스

 

 

 

프로세스 실행 방식

포그라운드 (foreground)
- 대화식으로 명령어를 수행하는 방식
 : 보이는 곳에서 명령어를 수행
 : 명령어의 이름만 입력하여 실행

 

 

백그라운드 (background)
- 보이지 않는 곳에서 수행되는 방식
 : 하나 이상의 명령어를 동시해 수행 가능
- 백그라운드 실행 방법 
 : 명령어 & 

 

 

jobs [옵션]

- 백그라운드에서 수행 중인 프로세스 목록 출력 (옵션 미사용시)

- 옵션

 : %PID = 해당 프로세스 정보 출력

 : %+ / %- = 작업 순서가 +, -인 프로세스 출력 (+ :  가장 최근에 접근한 작업 / - : +작업 직전에 접근한 작업 / 그 외)

 

 

bg

- 포그라운드에서 백그라운드 프로세스로 전환

 : Ctrl+Z로 수행을 일시정지 후 실행

 

 

fg %PID

- 백그라운드에서 포그라운드 프로세스로 전환

 

 

프로세스 실행 종료

- 포그라운드 : Ctrl+C

- 백그라운드 :  fg -> Ctrl+C

                 : kill PID

 

 

 

 

프로세스 관리 명령어

ps [옵션]

- 현재 수행중인 프로세스 정보 확인

- 옵션 (UNIX관련 옵션)

 : -e = 모든 정보

 : -f = UID와 PPID(부모프로세스의 PID) 포함 모든 정보

 : -u UID / -p PID = ID에 해당하는 프로세스 정보 출력

- 옵션 (BSD 관련 옵션)

 : a = 현재 터미널에서 수행중인 프로세스의 정보 출력

 : u = 현재 터미널에서 수행중인 프로세스의 사용자계정, 메모리 및 CPU 정도 등 추가하여 출력

 : x = 시스템 전체 프로세스의 정보출력

 

 

top [옵션]

- 프로세스의 실행 상태 실시간 확인

- 옵션

 : d 초 = 갱신 시간 지정

 : p PID = 해당 프로세스 정보 출력

 : i = 좀비나 idle 상태 프로세스 제외

 : n 횟수 = 횟수만큼 실행 현황 갱신후 출력

 : u 사용자 = 해당 계정이 수행하는 프로세스 정보 출력

- 내부명령어

 : 엔터, 스페이스, h, ?, k, u, M, P, q

 

 

nice [옵션] 프로세스

- 프로세스 생성시의 우선순위 설정 (우선순위가 높은 프로세스를 먼저 수행)

 : 우선순위 값 = 기본값 20

 : 우선순위 값은 -20부터 19까지 설정 가능 (값이 작을수록 높은 우선순위)

- 옵션

 : n = 우선순위 값 +n (우선순위 하락)

 : -n = 우선순위값 -n (우선순위 상승)

=> ex) nice --5 comeve (기존 우선순위 -5)

          nice -5 comeve (기존 우선순위 +5)

 

 

renice 옵션 PID

- 실행중인 프로세스의 우선순위 변경

- 옵션

 : n = 지정한 숫자대로 우선순위 설정 (-20 ~ 19)

=> ex) renice -15 1523 (우선순위 -15로 설정)   

 

 

kill [시그널] PID

- 실행중인 프로세스 종료

 : 해당 프로세스에게 시그널 전송하여 종료

- 옵션

 : l = 시그널 리스트 확인

- 대표적인 시그널

 : 15 (-SIGTERM) = 프로세스 종료

 : 9 (-SIGKILL) = 프로세스 소멸

 

 

 

 

 

프로세스의 종류

init 프로세스

- 시스템 부팅시 시스템 운영에 필요한 각종 프로세스 실행

- PID 1번

- 우분투 RunLevel

 : 시스템을 7단계로구분한 것

 : 0 = 시스템 종료

 : 1 = 단일 사용자 모드

 : 2 ~ 4 = 다중 사용자 모드

 : 5 = GUI 다중 사용자 모드

 : 6 = 재부팅

=> 현재는 systemd 프로세스로 대체

 

 

systemd 프로세스

- init을 대체하여 프로세스를 생성하고 시스템을 관리하는 프로세스 데몬

 : 프로세스를 병렬 실행시켜 성능 향상

- unit 

 : 시스템관리를 위한 구성요소

 : service, socket, device, taget 등... 

 : service = 서비스의 시작과 중지 / 재시작 역할

 

 

systemctl 옵션 내부명령 유닛

- systemd의 service 유닛을 관리

 : 옵션없이 사용할 경우 active 상태인 유닛만 출력

- 옵션

 : a = 유닛 전체 출력

 : t 유닛종류 = 지정한 종류의 유닛만 출력

- 내부명령

 : start / stop / restart 

 : status = 상태 출력

 : reload = 설정 파일 다시 읽기

 : enable / disable = 부팅시 실행 / 미실행

 : is-active = 시작되었는지 확인

 

 

데몬

- 항상 실행되면서 클라이언트의 요청이 있을때 서비스를 수행하는 시스템 프로세스

 : 네트워크 서비스에서 활용

- 데몬의 동작 방식 

 : standalone = 메모리에서 항상 실행되다 즉각 처리

                  = httpd

 : xinetd = 휴지(sleep) 상태에서 요청이 올때 wakeup하여 처리

- xinetd 데몬 (슈퍼데몬)

 : 휴지상태인 데몬을 깨우는 데몬

 : 요구발생시 요구한 서비스 분석후 해당 데몬 wakeup

 

 

 

 

작업예약

at [옵션] 시간 날짜/+증가시간

- 특정 명령어들을 지정된 시간에 한번만 실행

- 옵션

 : q 큐이름 = 예약된 작업이 저장되는 큐의 이름을 지정

 : f 파일명 = 예약작업을 파일에서 읽어들임

 : l = 예약된 작업 목록 출력

 : d =예약된 작업 삭제

- 시간

 : hh:mm

 : am/pm

 : midnight

 : moon

 : now

- 날짜

 : YYYY-MM-DD

 : month num = 월과 일 (May 21)

 : today 

- 증가시간

 : 지정된 시간과 날짜를 기준으로 몇 시간 후 인지 표현

 

 

atq [옵션]

- 예약 큐에 존재하는 예약된 작업 목록 출력

- 옵션

 : q 큐이름 = 지정된 큐에 존재하는 예약 작업 목록 확인

 

 

atrm 작업번호 리스트

- 예약 작업 취소 (at -d)

 

 

crontab 옵션

- 일정 시간마다 반복되는 작업 예약

- 옵션

 : l = 지정된 내용 확인

 : r = 지정된 내용 취소

 : e = 작업 지정

- crontab 파일 구조

 : 분 (0~59)

 : 시 (0~23)

 : 일 (1~31)

 : 월 (1~12)

 : 요일 (0~6) = 일요일이 시작

 : 작업내용

=> * 기호로 표시시 무관함을 표현

300x250
728x90