본문으로 바로가기

Day-11 프로세스 관리 1

category Linux 2017. 1. 3. 17:49


init - 부팅 시 가장 먼저 실행되는 시스템 초기화 프로세스

 

프로세스 (process)
- 커널의 관리하에 현재 시스템에서 동작중인 프로그램이다.
- 커널은 프로세스 관리를 위해 각 프로세스에게 PCB를 할당한다.
- init을 제외한 모든 프로세스는 자식-부모 관계를 가지고 있다.

 

PCB (Process Control Block)
- 고유번호 (PID, Process IDentification number)
   커널이 할당하는 프로세스마다 부여되는 고유의 번호
- 우선순위 (Priority)
   운영체제가 스케줄링 하기 위한 정보
- 현재 상태 (Crurrent State)
   할당받은 자원 및 프로세스의 상태를 나타내는 정보
- 할당받은 자원의 포인터
- 문맥 저장 영역  

프로세스의 종류
- 데몬 (daemon) 프로세스
    커널에 의해서 실행되고 특정 서비스를 제공한다.
 ex) 웹 서버를 동작하기 위해서는 httpd라는 프로세스가 동작하고 있어야 하며 httpd를 웹 서버 데몬이라고 한다.
- 부모(parent)프로세스
        부모 프로세스는 다른 프로세스를 만들며, init을 제외한 모든 프로세스는 부모 프로세스를 가지고 있다.
- 자식 (child) 프로세스
       부모 프로세스에 의해 만들어지는 프로세스이다.
       자식 프로세스는 종류시 부모 프로세스에게 결과를 전달하고 종료된다.

 

 


- 고아 (orphan) 프로세스 
       자식 프로세스보다 먼저 부모프로세스가 종료되었을때 해당 자식프로세스는 고아 프로세스가 되어  init 프로세스가 관리를 한다.
- 좀비 (zombie, defunct) 프로세스
       자식 프로세스의 종료신호를 부모프로세스가 처리 하지 못 할 경우, 자식 프로세스는 좀비 프로세스가 된다.


ps (Processor Status) - 시스템에 동작중인 프로세스 확인

 

ps - 현재 터미널에 실행되고 있는 프로세스에 대한 간단한 정보만 출력
  
옵션
-e 모든 프로세스에 대한 리스트 출력
-f full format으로 출력

UID - 프로세스를 실행 시키는 프로세스의 소유자 의미
PID - 실행된 프로세스에 부여된 숫자
PPID - 프로세스를 생성한 부모 프로세스의 PID
C - 프로세스 스케줄링을 위한 CPU사용량 -> 현재 사용 하지 않는 필드
STIME - 프로세스가 시작된 시간
TTY (Teletype) - 프로세스가 연결된 제어 터미널을 표시, (?)는 제어 터미널에 연결되어 있지 않음을 뜻함
TIME - 프로세스에 의해 사용된 CPU 사용 시간
CMD - 실행된 프로세스 명 (실행된 명령어)        

 

#ps -ef 명령어를 입력하면 아래와 같다

 

 

 

옵션

-a 다른 사용자들의 프로세스도 출력
-u 사용자 이름, 시간 등 자세한 정보 출력
-x 지금 사용되고 있는 모든 프로세스를 출력

 

USER - 프로세스 소유 계졍 이름 ※
PID - 실행된 프로세스에 부여된 숫자
%CPU - 사용된 CPU의 측정량
%MEM - 사용된 메모리의 측정량
VSZ - 가상 메모리의 크기
RSS - 사용된 실제 메모리
TTY - 프로세스와 관련된 가상 터미널
STAT - 프로세스의 상태 ※
      R : 실행 중 (Running)
      S : 대기 상태 (Sleep)
      T : 작업 제어에 의해 정지된 상태 (Stop)
      Z : 좀비 프로세스 (defunct)
      X : 완전히 죽어 있는 프로세스
      D : io와 같이 중지(interrupt)시킬 수 없는 잠자고 있는 (휴지) 프로세스 상태
       < : 프로세스의 우선 순위가 높은 상태
       N : 프로세스의 우선 순위가 낮은 상태
       L : 실시간이나 기존 IO를 위해 메모리 안에 잠겨진 페이지를 가진 상태
       s : 세션 리터(주도 프로세스)
       I : 멀티 쓰레드
       + : 포어그라운드 상태로 동작하는 프로세스
START - 프로세스 시작 시간
TIME - 총 CPU 사용시간
COMMAND - 실행된 프로세스 명, 실행된 명령어

 

#ps -aux를 입력하면 아래와 같다.

 

 



kill - 프로세스 종료 명령
kill -[시그널] [PID]

kill -SIGKILL 1519 해당 프로세스 종료
kill -9 1519 해당 프로세스 종료

자주 사용하는 시그널
프로세스 종료 -  2)SIGINT       -> 일반 종료
                         15)SIGTERM    -> 일반 종료
                         9)SIGKILL      -> 강제 종료
프로세스 정지 - 19)SIGSTOP           
프로세스 재시작 18)SIGCONT

Ctrl + C       SIGINT
Ctrl + Z       SIGSTOP

 

 

 


포어 그라운드 (Foreground)
  - 프롬프트에서 입력하는 대부분의 명령어는 포어 그라운드로 동작
  - 명령어의 실행 과정이나 결과를 화면에 출력
  - 포어 그라운드로 실행되는 프로세스가 종료되길 기다렸다가 종료되면 다시 프롬프트를 보여주어 명령대기 상태로 변환
  
백 그라운드 (Background) 
  - 프로세스의 종료 여부의 관계없이 즉시 명령 대기 상태가 되어 다른 명령을 할 수 있음
  - 백그라운드로 실행 시키기 위해서는 '&' (ampersand)를 붙여 사용
  - 장시간 실행되어야 하는 경우에 주로 사용
 
  ex) [명령어] &
  
jobs - 백그라운드에서 동작하는 프로세스를 출력


작업목록에서 [+] 기호는 현재 작업 중
                     [-] 기호는 현재 대기 중
   

   
fg - 백그라운드 작업을 포어그라운드로 변경
bg - 포어그라운드 작업을 백그라운드로 변경

ex) fg %[작업번호]
      bg %[작업번호]

 

 

※ root password 찾기

 

boot시 3,2,1때 아무키나 누른다


e누르기 -> e누르기 -> 오른쪽 끝에 1, single -> enter -> b누르기

 

 

 

 

※ root password 찾기 방지

 

grub -> md5crypt -> password1! -> 암호 복사 -> quit ->  vi /boot/grub/grub.conf -> passwd 입력 -> reboot -> 확인

 

 

 

 

'Linux' 카테고리의 다른 글

Day-13 프로세스 관리 3 & 파일 시스템 관리 1  (0) 2017.01.06
Day-12 프로세스 관리 2  (0) 2017.01.06
Day-10 사용자 계정관리 3  (0) 2016.12.31
Day-9 사용자 계정관리 2  (0) 2016.12.31
Day - 8 사용자 계정관리 1  (0) 2016.12.26