ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 바이블: Chapter6. Managing Running Process 정리
    리눅스 2021. 2. 12. 18:28

     

    1. Understanding Process

     

    프로세스란 실행중인 커맨드 인스턴스를 의미한다. 예를들어 시스템 위에 vi 커맨드가 하나 있을 때, 이 커맨드가 

    15명의 사용자에 의해 실행되고 있다면, 이는 15개의 다른 프로세스가 실행되고 있다는것을 의미한다.

     

    프로세스들은 process ID로 구분되며, 한 시스템 위에서 유니크한 값을 가진다. 각각의 사용자들은 사용자의 정보에 따라

    접근할 수 있는 프로세스들이 달라진다. 예를 들어 루트 사용자가 일반 사용자들보다 더 많은 시스템 파일에 접근할 수 있는

    것과 같다.

     

    그러므로 리눅스 시스템 관리자는 시스템 위에서 프로세스를 관리할 줄 알아야한다. 

    잘못된 방식의 프로세스 사용은 시스템 퍼포먼스에 문제를 야기할 수 있으므로 

    관리자는 문제를 찾을 줄 알고 해결할 줄 알아야 한다.

     

     

     

     

    2. Listing Processes

     

    ps 명령어로 프로세스 출력하기

     

     

     

     각 항목들의 의미는 다음과 같다. 

    https://jhnyang.tistory.com/268 참고 

     

     

    ps ax는 시스템에 동작중인 모든 프로세스를 보고 싶을 때 사용

     

     

     

    ps aux는 ps ax에 소유자 정보까지 함께 추가하여 출력

     

     

    top 커맨드는 ps 커맨드보다 화면에 최적화된 결과를 출력

    또한 top 커맨드를 루트 권한으로 실행하여 프로세스를 죽이거나 우선순위를 변경할 수 있다. 

     

     

     

     

     

     

    3. Managing Background and Foreground Processes

     

    윈도우는 GUI를 통해 여러 프로그램을 동시 실행 및 관리 가능하다.

    하지만 리눅스 환경에서는 리눅스 쉘 환경에서 작업을 진행하며 다른 작업을 실행할때는 

    사용하지 않는 프로그램은 백그라운드로, 사용하려는 프로그램은 포그라운드로 이동시킨다.

     

    앰퍼센드(&)를 붙여주면 백그라운드에서 실행하겠다는 의미

     

    여기서 [1]은 job number, 456은 프로세스 ID를 의미한다. 

     

     

     

     

    jobs 커맨드 사용시  현재 백그라운드에서 실행되고 있는 프로세스를 보여준다. 

     

     

     

     

    4. Killing and Renicing Processes

     

    kill 커맨드를 이용하여 프로세스에 신호를 보내고 프로세스를 죽이거나 여러동작을 시킨다.


    - SIGKILL(9) : 프로세스 죽이기(종료)
    - SIGTERM(15) : 프로그램 종료
    - SIGHUP(1) : 설정파일 다시 읽기
    - SIGINT(2) : 키보드로 부터 오는 인터럽트 시그널로 실행 중지
    - SIGSTOP(17, 19, 23) : 터미널에 입력된 정지 신호 프로세스 중지
    - SIGCONT(19, 18, 25) : stop 시그널로 정지된 프로세스 재실행

     

     

    - kill [프로세스ID]
    - kill –[시그널 번호 or 이름] [프로세스 ID] 

     

     

    nice 커맨드는 프로세스의 우선순위를 결정한다. 


    - nice 값에 따라 cpu에 접근하는 프로세스 결정
    - nice 값은 -20에서 19까지 설정 가능 (기본값 : 0)
    - 낮을수록 cpu 의존도가 높음
    - 일반 사용자는 nice 값을 높일수만 있고 자신의 프로세스만 설정 가능
    - 루트사용자는 모든 프로세스의 nice 값 설정 가능
    - nice [nice값] [프로세스]
    - renice [nice옵션] [변경할 nice 값] [프로세스ID]

     

     

     

     

    5. Limiting Processes with cgroups

     

    cgroup은 control groups의 약자로 프로세스들이 사용할 수 있는 컴퓨팅 자원들을

    제한하고 격리시킬 수 있는 리눅스 커널의 한 기능 

     

    - 프로세스를 특정 컨트롤 그룹에 속한 task로 식별 task 계층구조로 설정

    - /etc/cgrules.conf 파일을 편집하여 사용자 자신의 cgroup 생성 특정 사용자/그룹 제한 

    - cgcreate 명령어로 cgroup 생성 /sys/fs/cgroup 계층에 해당 그룹 추가

     

     

    c group으로 프로세스 제한가능한 항목들 

     

    blkio : 물리 드라이브와 같은 블록 장치에 대한 입력/출력 액세스에 제한을 설정
    cpu : CPU에 cgroup 작업 액세스를 제공하기 위해 스케줄러를 사용
    cpuacct : cgroup의 작업에 사용된 CPU 자원에 대한 보고서를 자동으로 생성
    cpuset : 개별 CPU (멀티코어 시스템에서) 및 메모리 노드를 cgroup의 작업에 할당
    devices : cgroup의 작업 단위로 장치에 대한 액세스를 허용하거나 거부
    freezer : cgroup의 작업을 일시 중지하거나 다시 시작
    memory : cgroup의 작업에서 사용되는 메모리에 대한 제한을 설정하고
    이러한 작업에서 사용되는 메모리 자원에 대한 보고서를 자동으로 생성
    net_cls : Linux 트래픽 컨트롤러 (tc)가 특정 cgroup 작업에서 발생하는 패킷을 식별하게 하는
    클래식 식별자 (classid)를 사용하여 네트워크 패킷에 태그를 지정
    ns : namespace 서브시스템

     

     

     

     

    EXERCISE 

     

    Exercise 2 answer

     

     

     

    Exercise 3 answer

     

     

    반응형

    댓글

Designed by Tistory.