We are Architect

6. 프로세스 관리 본문

운영체제/Linux

6. 프로세스 관리

the best infra 2024. 11. 24. 17:24

 

* 프로세스와 작업 관리

- 시스템의 안정성과 효율을 및 사용자의 요구 충족 그리고 리눅스에서 발생하는 문제의 해결을 위해서는 다음과 같은 항목들을 알아야 한다. 

 

 

* 프로세스 관리

  • 프로세스: 현재 실행되고 있는 프로그램. 
  • 프로세스의 호출 방식 (fork방식)
    • 부모-자식 관계: 필요에 따라 부모 프로세는 자식을 호출하고 자식은 또 다른 자식 호출가능 -> fork방식
    • 그 덕분에 관리하기가 쉬움. -> 쉬운 추적 및 종료가능. 
    • 부모 프로세스의 예시) bash 쉘 / 자식 프로세스의 예시) vi, ls
  • 프로세스의 호출 방식 (exec방식)
    • 프로세스들을 덮어 씌워서 실행시키는 방식. 
    • 덮어 씌워서 프로세스를 관리 하기는 어려움.
    • 그러나 메모리 사용이 덜함. 
  • 프로세스 번호
    • 각 프로세스는 고유의 번호(PID)를 갖고 있음.
  • 프로세스의 종류
    1. 일반 프로세스
      • 뭔가를 실행시키고 종료되면 없어지는 프로세스. 
    2. 데몬 프로세스
      • 특정 서비스를 제공하기 위해 존재. 리눅스 커널에 의해 실행. 
      • 스스로 종료하지 않고 영구적으로 프로세스를 실행. 
      • 백그라운드에서 동작. 
      • 데몬 프로세스의 종류 
        1. standard alone: 보통 데몬 프로세스들이 사용하는 방식.
          • 모든 프로세스들이 메모리에 상주하는 방식.
          • 메모리에 상주해 있다보니 응답속도가 빠름. 
          • 단, 상주하는 메모리들이 많다 보면 메모리 공간이 부족해질 수 있음.
        2. super daemon: xinetd에 의해 동작. 
          •  슈퍼 데몬들만 상주하는 방식.
          • 메모리의 xinetd의 의해서 데몬 프로세스를 HDD에서 꺼내고 집어넣고 해서 응답속도가 느리다. 
        3. * 키워드
          • 데몬 프로세스에서 데몬의 뜻
            • '보이지 않는 영적인 존재' 라는 뜻으로 프로세스가 사용자의 눈에서 동작하지 않고 백그라운드에서 실행된다고 해서 데몬이라는 수식어가 앞에 붙음. 
          • xinetd
            • 인터넷 서비스 데몬이라고 하며 여러 네트워크 서비스를 중앙에서 관리하는 데 사용.
    3. 고아 프로세스
      • 자식 프로세스가 아직 실행중인데 부모 프로세스가 종료된 상태. 
      • 자식 프로세스를 고아 프로세스라고 함. 
      • 차후에 PID 1(시스템 d)가 고아 프로세스를 관리함. 
    4. 좀비 프로세스
      • 자식 프로세스가 종료가 되었으나 부모 프로세스 테이블에 남아 있는 경우. 
      • 테이블에는 목록이 늘어날수록 메모리에 부담이 간다. 
  • 포그라운드 & 백그라운드 
    • 포그라운드: 프로세스가 쉘 앞에서 동작하는 경우로 화면에서 사용자가 프로세스 종료 시까지 컨트롤 불가능.
    • 백그라운드: 프로세스가 쉘 뒤에서 동작하는 경우로 사용자가 화면 컨트롤이 가능. 
    • 어떤 작업이냐에 따라 사용되는 동작되는 방식이 다름.  
  • 프로세스를 컨트롤하는 명령어
    • kill -1 [PID] : 프로세스 재시작.
    • kill -2 [PID] : 프로세스 강제 중지(Ctrl + c) -> 아직 메모리에 상주.
    • kill -3 [PID] : 비정상 종료.
    • kill -9 [PID] : 프로세스 강제 종료.
    • kill -11 [PID] : 메모리 비정상적으로 사용 중 일때 해당 프로세스 종료. 
    • kill -15 [PID] : 프로세스 정상 종료. 
    • kill -17 [PID] : 좀비 프로세스 종료.
    • kill -19 [PID] : 작업 제어시 사용. (포그라운드에서 백그라운드 전환 시 -> Ctrl + z)
  • 프로세스 목록 보기
    • ps : 현재 터미널에서만 실행시킨 프로세스 실행 목록을 보여준다.
    • pstree : 모든 프로세스를 트리 형태로 보여주는 명령어.
    • ps -e : 현재 터미널에서 실행되는 모든 프로세스들이 나온다.
    • ps -ef : 보다 더 상세 정보를 알기 위한 -f 옵션.
    • 메모리 사용 관련 옵션은 없다.
    • ps -fu 사용자 : 특정 사용자가 실행시킨 ps 목록들.
    • pgrep : 원하는 프로세스를 찾아준다.
    • pgrep -x : 패턴과 정확하게 일치한 패턴을 찾아줌
    • pgrep -n : 최근 프로세스 정보를 출력한다.
    • 응용: ps -fp $(pgrep -u user1 bash)
      • pgrep으로 찾아라 user1에 있는 bash 라는 파일을, 그리고 프로세스 내용을 자세히 출력하라.
    • ps : 현재터미널 기준에서 실행중인 목록 나옴.
    • ps a : 이 시스템에서 가동한 터미널에서 돌아가는 ps 들.
    • ps au : 이 시스템에서 가동한 터미널의 상세정보를 나타냄.
    • ps aux : 전체시스템에서 가동한 터미널의 상세정보를 나타낸다.
    • ps -p PID : 프로세스의 상세 정보를 알려줌. 

 

 

'운영체제 > Linux' 카테고리의 다른 글

8. 작업관리 & 작업예약  (0) 2024.11.25
7. 프로세스 관리(2)  (0) 2024.11.25
5. 쉘(Shell)  (0) 2024.11.23
4. 문서 편집기  (0) 2024.11.21
3. 디렉터리와 파일 그리고 명령어까지..(2)  (0) 2024.11.21