[리눅스 마스터 2급] 프로세스(Process)

2023. 1. 14. 16:44·리눅스/리눅스 마스터 2급
728x90
반응형
SMALL
  • 프로세스?

현재 실행중인 프로그램을 의미한다.

( 메모리에 적재되어, PCB(Process Control Block)이라는 형태로 OS에 의해 관리되는 상태)

 

프로세스와 프로그램은 절대 다르다.

시험에 안나오지만 아래 사진은 참고만 해두자.

 

https://watermelon-sugar.tistory.com/37



  • 프로세스(process)의 생성

 

  • fork - 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스를 실행하는 형태

기존의 프로세스는 그대로 실행하고 원래의 프로세스와 똑같은 코드를 기반으로 실행한다.

보통 명령어를 내리면 fork형태로 수행된다.

 

  • exec - 원래의 프로세스를 새로운 프로세스로 대체하는 형태

호출한 프로세스의 메모리에 새로운 프로세스의 코드로 덮어 씌움

명령어 앞에 exec를 붙이면 기본 프로세스가 교체되며 새로운 프로세스가 할당된다.


  • 프로세스의 종류

 

  1. 포어그라운드 프로세스(전면 처리) = 명령 입력 후 수행종료까지 기다려야한다.
  2. ★백그라운드 프로세스(후면 처리) = 사용자 입력에 관계없이 실행된다.
    프로세스 실행 명령 뒤에 &만 추가로 붙여 실행 하면 된다 ( 다중 작업시 유리)

 


  • ★★작업 상태 확인
  • 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들의 의미
  1. USER : 프로세스를 소유한 사용자
  2. PID : Process ID
  3. %CPU : cpu사용률
  4. $MEM : memory 사용률
  5. VSZ: 가상 메모리 사용량
  6. RSS : 실제 메모리 사용량
  7. TTY : 프로세스를 컨트롤 하는 터미널
  8. STAT : 현재 프로세스의 상태
  9. START : 프로세스 시작날
  10. TIME : 프로세스가 지금까지 사용한 CPU시간
  11. 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 입력 시 : 프로세스 대기
728x90
반응형
SMALL

'리눅스 > 리눅스 마스터 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
'리눅스/리눅스 마스터 2급' 카테고리의 다른 글
  • 리눅스 마스터2급 - 명령어 정리(1) man,passwd,useradd 등
  • 리눅스 well-known port
  • [리눅스 마스터 2급] X-윈도우(X-window)
  • [리눅스 마스터 2급] 쿼터(Quota)
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
    250x250
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (325)
      • 면접 준비 (22)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (2)
      • Kafka (4)
      • Spring (22)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (2)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      스프링프레임워크
      Spring Data Redis
      리눅스마스터2급
      springsecurity
      Til
      자바 면접
      리눅스마스터2급정리
      리눅스
      JavaScript
      자바 반복문
      자바
      자바기초
      자바 알고리즘
      프로그래머스
      spring redis
      레디스
      redis 채팅
      자바 면접질문
      Spring
      jsp request
      redis
      JS
      HTML
      Springframework
      java
      백준
      JSP
      자바스크립트
      CSS
      jsp기초
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [리눅스 마스터 2급] 프로세스(Process)

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인
    상단으로

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.