페도라 리눅스 Chapter 06 프로세스 관리
OS/Fedora Linux

페도라 리눅스 Chapter 06 프로세스 관리

프로세스 개념

프로세스의 부모-자식 관계

  • 리눅스에서 모든 프로세스는 부모-자식 관계를 가짐
  • 리눅스 시스템을 부팅할 때 스케줄러가 실행한 프로세스인 systemd와 kthreadd 프로세스를 제외하고,
    모든 프로세스는 부모 프로세스를 가짐

 

프로세스 종류

  • 데몬 프로세스 
    • 데몬은 평소에는 대기 상태 - 서비스 요청이 들어오면 서비스 제공 -- 다시 대기모드
    • 강제로 종료시키기 전에는 계속 살아있음
    • 죽지 않음 ( systemd , kthreadd )
  • 고아 프로세스
    • 자식 프로세스는 종료 시 부모 프로세스로 회귀,
      그러나 자식 프로세스가 아직 실행 중에 부모 프로세스가 먼저 종료되면 자식 => 고아 프로세스
      이 경우 1번 프로세스(systemd) 가 새로운 부모 프로세스가 되어 고아 프로세스의 작업을 종료
  • 좀비 프로세스
    • 자식 프로세스는 종료 시 부모 프로세스에 종료 정보(exit status)를 보내고, 부모 프로세스가 이 정보를 받으면 자식 프로세스는 프로세스 테이블 목록에서 삭제되지만, 자식 프로세스가 실행을 종료했는데도 목록에 남아 있는 경우

 


프로세스 관리 명령

프로세스 목록 출력 / 정보 검색

ps : 실행중인 프로세스 정보 출력

[ 유닉스 옵션 ]
   ps -e : 실행 중인 모든 프로세스의 정보 출력
   ps -f : 프로세스의 상세 정보 출력 
[ BSD 옵션 ]
   ps -a : 터미널에서 실행한 프로세스의 정보 출력

 

ps -e
출력 내용이 위로 스크롤되어 프로세스 목록을 제대로 확인하기 어렵기 때문에
| (파이프) 와 more 나 less 명령을 함께 사용하여 페이지 단위로 출력

∴ ps -e | more 

 

ps -f
UID           PID        PPID      C    STIME   TTY          TIME           CMD
user1        2115     2057     0    13:11    pts/0        00:00:00     bash
user1        5214     2115     0    15:41    pts/0        00:00:00     ps -f

∴ user1 은 bash 를 13시 11분에 0번 터미널에서 실행하고 있으며, 부모 프로세스의 PID(PPID)는 2057번이다.

UID 프로세스를 실행한 사용자 ID SMITE 프로세스의 시작 날짜/시간
PID 프로세스 번호 TTY 프로세스가 실행된 터미널의 종류, 번호
PPID 부모 프로세스 번호 TIME 프로세스 실행 시간
C CPU 사용 % CMD 실행중인 프로그램 이름(명령)
▲ ps -f 의 출력 정보

 

ps a
PID  TTY         STAT
957  tty1        R  : 실행 중 (running)
975  tty1        etc . . .

 

ps 명령으로 특정 프로세스 정보 검색
ps -ef | grep bash

∴ bash 가 포함된 정보만 찾음

 

프로세스 종료

  • 시그널 ?
    • 프로세스에 무언가 발생했음을 알리는 간단 메세지.
      이 메세지에는 무엇이 발생했는지를 나타내는 미리 정의된 상수를 사용함.
      시그널은 번호로 구분되며 이름을 가짐
    • 시그널을 받은 프로세스는 기본적으로 종료됨
    • 리눅스에서 지원하는 시그널의 목록은 kill -l 명령으로 확인
주 사용 시그널

SIGINT          2       종료     인터럽트로 사용자가 Ctrl+c 입력시 발생
SIGKILL         9       종료     이 시그널을 받은 프로세스는 무시할 수 없으며 강제 종료됨
SIGTERM      15     종료     kill 명령이 보내는 기본 시그널. 우아하게 끝냄 ( 저장, 정리를 모두 마치고 )

 

kill 명령으로 프로세스 종료
  • kill 명령에서 시그널을 지정하지 않을 경우 15번 시그널로 간주.
kill [-시그널] PID

ex) kill 1001              kill -15 1001             kill -9 1001

 


작업 예약
at : 예약한 명령을 정해진 시간에 실행
crontab : 지정 시간에 반복 실행하도록 설정

 


연습문제

 

01 | 일반 프로세스와 데몬 프로세스의 차이를 설명하시오.

더보기

데몬 프로세스는 소멸하지 않음

 

02 | ps -f 명령의 결과가 다음과 같을 때 프로세스의 부모-자식 관계를 설명하시오.

$ ps -f
UID            PID          PPID       C      STIME           TTY       TIME     CMD
user1        15761      15721     0      18:14:17      pts/0      0:00      vi  /etc/host
user1        15721      15710     0      18:14:09      pts/0      0:00      sh
user1        15710      15701     0      18:12:59      pts/0      0:00      -bash
더보기

PID 15721은 PID 15761의 부모 프로세스이며,

PID 15710은 PID 15721의 부모 프로세스이고,

PID 15701은 PID 15710의 부모 프로세스이다.

 

04 | PID가 5000인 프로세스를 kill 5000 명령으로 종료하려는데 종료되지 않는다. 이 프로세스를 강제로 종료하려면 어떻게 해야 하는지 설명하시오.

더보기

kill –9 5000