본문 바로가기

Foundation/- Linux

프로세스(Process)??

프로세스 (Process)
- 커널의 관리 하에 현재 시스템에서 동작중인 프로그램이다.
- 커널은 프로세스 관리를 위해 각프로세스에게 PCB를 할당한다.

 

PCB ( Process Control Block)
- 고유번호 (PID, Process IDentification Number)
  커널이 할당하는 프로세스마다 부여되는 고유의 번호
- 우선순위 (Priority)
 운영체제가 스케줄링 하기 위한 정보
- 현재 상태 (Current State)
 할당받은 자원 및 프로세스의 상태를 나타내는 정보
 
프로세스의 종류
 -데몬(Daemon) 프로세스
  커널에 의해서 실행되고 특정서비스를 제공하는 프로세스


 -부모(Parent) 프로세스
  부모 프로세스는 다른 프로세스를 만들며, init을 제외한 모든 프로세스는
  부모 프로세스를 가지고 있다.


 

 -자식(Child)  프로세스
  부모 프로세스에 의해 만들어지는 프로세스이다.
  자식 프로세스는 종료시 부모 프로세스에게 결과를 전달하고 종료된다. 

 -고아(Orphan) 프로세스
  자식 프로세스보다 부모 프로세스가 먼저 종료되었을때 해당 프로세스는
  고아 프로세스가 되어 init 프로세스가 관리를 한다.


 

 -좀비(Zombie) 프로세스
  자식 프로세스의 종료신호를 부모 프로세스가 처리하지 못할 경우,
  자식 프로세스는 좀비 프로세스가 된다.
    
  init 프로세스
  - 부팅 시 가장 먼저 실행되는 시스템 초기화 프로세스
  
ps (Process Status) - 시스템에 동작중인 프로세스 확인

 [옵션]
 -e 모든 프로세스에대한 리스트 출력
 -f full format으로 출력
 -a 다른 사용자의 프로세스도 출력
 -u 사용자 이름, 시간 등 상세한 정보 출력
 -x 지금 사용되고 있는 모든 프로세스를 출력
  
 현재 시스템 실행중인 프로세스 확인
  #ps -ef   
  #ps -ef | more

  #ps -ef | grep fire                // firepox를 킨 후 명령어를 입력했을 


(1)root (2)734 (3)1

(1)UID - 프로세스를 실행 시킨 프로세스의 소유자를 의미 
(2)PID - 실행된 프로세스에 부여된 숫자를 의미 임의로 번호가 주어진다.
           최근에 실행시킨 프로세스가 PID 값이 높다
(3)PPID - Parents Process ID의 약자로, 프로세스를 생성한 부모 프로세스의 PID

 kill - 프로세스에 신호(SIGNAL)를 전달하는 명령어
  #kill -[SIGNAL] [PID]
  
 SIGNAL 종류 확인
  #kill -l
  자주 사용하는 시그널
  2) SIGINT - 프로세스 종료 (인터럽트)
  9) SIGKILL - 프로세스 강제 종료
  15) SIGTERM - 프로세스 종료
  18) SIGCONT - 프로세스 재시작
  19) SIGSTOP - 프로세스 정지
  
 SIGNAL 사용
  1번 세션        2번 세션
            #vi /etc/services
  #ps -ef | grep vi -> PID 확인
       
  (1) #kill -9 [PID]
  (2) #kill -SIGKILL [PID]
            죽었음
  
 프로세스 동작 형태
  포어 그라운드 (Foreground)
   - 프롬프트에서 입력하는 대부분의 명령어는 포어 그라운드 동작
   - 명령어의 실행 과정이나 결과를 화면에 출력
   - 프로세스가 종료되길 기렸다가 종료가되면 프롬프트를 출력하여
     명령대기 상태로 변환
 
  백 그라운드 (Background)
   - 프로세스의 종료 여부에 관계없이 즉시 명령 대기 상태가되어
     다른명령어를 실행 할 수 있음
   - 장시간 실행되어야하는 프로세스 주로 사용
   - 명령어 뒤에 ampersand ( & )
  #명령어 &
  [작업번호] [PID]
  
  #fg - 백그라운드 작업 중인 프로세스를  포어그라운드로 변경
  #fg %[작업번호]
   
  #bg - 포어그라운드 작업을 백그라운드로 변경
  #bg %[작업번호]
   
  #sleep [숫자] // 입력한 숫자만큼 대기 (단위/초) 
 
  Ctrl + z -> 19) SIGSTOP - 프로세스 정지
  
  #jobs - 백그라운드에 동작하는 프로세스를 확인하는 명령어
 
  sleep 9999999 & 프로세스를 정지
   1. PID 혹은 작업번호 확인
    #ps -ef
    #jobs
   2. kill 명령어로 정지 신호 전달
    #kill -19 [PID/작업번호]
    #kill -SIGSTOP [PID/작업번호]
   3. 프로세스 정지 확인
    #jobs
    #ps -aux | grep sleep
     STAT 필드 확인 T -> 작업제어로 인해 정지된 상태
   4. 프로세스 재시작 신호 전달
    #kill -18 [PID/작업번호]
    #kill -18 %1
    #kill -SIGCONT [PID/작업번호]

'Foundation > - Linux' 카테고리의 다른 글

응급처치 & GRUB설정  (0) 2017.05.16
Telnet & SSH & VNC  (0) 2017.05.15
DHCP ??!  (0) 2017.05.11
파이프&필터(grep)&cut&리다이렉션  (0) 2017.05.10
Bonding??  (0) 2017.05.10