ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서버 기술 기초 요약 - 리눅스 쉘 사용법 이해 3
    CS지식/운영체제 2022. 5. 1. 14:21

    프로세스 관리

     

    프로세스 vs 바이너리

    • 코드 이미지 또는 바이너리 : 실행파일
    • 실행 중이 프로그램 : 프로세스
      • 가상 메모리 및 물리 메모리 정보
      • 시스템 리소스 관련 정보
      • 스케쥴링 단위

     

    실행파일은 0과1로 이루어져 있기 때문에 보통 바이너리 라고 많이 부른다. 이런 바이너리는 실제로 운영체제가 실행을 하게 되면, 운영체제가 이것을 프로세스라는 것으로 바꿔서 실행을 하게 된다.

     

    바이너리에 있는 일정 코드 부분을 메모리에 넣고, 운영체제가 메모리에 있는 코드를 운영체제가 정의한 포맷과 단위에 따라서 실행을 하면서, 해당 응용 프로그램이 실행이된다.

     

    리눅스는 다양한 프로세스 실행 환경

    • 리눅스는 기본적으로 다양한 프로세스가 실행된다.
      • 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델

     

    굳이 이런 기능을 하나의 응용프로그램에 넣지 않고, 각각의 기능을 하는 프로그램으로 만든 다음에, 이를 유기적으로 연결 시켜서 사용자가 원하는 기능을 수행할 수 있다.

     

    => 이러한 철학을 가지고 있고, 관련한 명령들이 그런 철학을 지원을 하고 있다.

     

     

     

    foreground process / background process

     

    • foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후 , 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스

     

    • background process : 사용자가 입력과 상관없이 실행되는 프로세스
      • 쉘(shell)에서 해당 프로세스 실행시, 맨 위에 &를 붙여준다.

    사용 예)

    #find / -name '*.py' > list.txt &
    [1] 57
    • [1]은 작업 번호(job number), 57을 pid(process ID)를 나타냄

     

    foreground process 제어하기

    • [CTRL] + c : 프로세스 작업 취소(해당 프로세스는 완전히 종료됩니다.)

    가끔은 어떤 프로그램을 실행 할 때 그 프로그램이 굉장히 오래 걸릴 수가 있다. 그 프로그램이 끝나기 전 까지는 아무 명령도 입력이 안되서 난감할 수 있다. 그럴 때 는 ctrl+c로 프로세스를 종료 시키면 된다.

     

    ps : 어떤 프로세스가 실행되고 있는지 조회 할 수 있는 명령어 이다. (단 유저가 직접 실행시킨 프로세스에 국한된다.)

     

    사실 윈도우도 그렇지만, 사용자가 직접 실행시킨 프로그램 이외에 시스템에서 자체적으로 실행하고 있는 프로세스들도 굉장히 많고, 다중 사용자가 운영체제를 사용하고 있을 경우에는 여러 사용자가 동시에 실행하고 있는 프로세스도 존재 할 수 있다. 그리고 ps 명령어 만으로는 프로세스의 상세한 정보를 얻기 어렵다.

     

    프로세스 상태확인  -ps 명령어

    • 사용법 : ps [options(s)]
    • option(s)
    -a : 시스템 사용하는 모든 사용자의 프로세스 출력
    (보통 aux 와  같이 u, x 옵션과 함께 사용)

    -u : 프로세스 소유자에 대한 상세 정보 출력
    -l : 프로세스 관련 상세 정보 출력
    -x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들도 출력함.
         주로 데몬 프로세스(daemon process)까지 확인하기 위해 사용.
         본래 ps 명령은 현재 쉘(shell)에서 실행한 프로세스들만
         보여 주기 때문에 이 옵션을 사용하는 경우가 많음.

    -e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력
    -f : 프로세스 간 관계 정보도 출력
        
    • 데몬 프로세스(daemon process) : daemon은 악마를 위미함. 사용자 모르게 시스템 관리를 위해 실행되는 프로세스 보통 시스템이 부팅될 때 자종 실행(예)ftpd, inetd등)
    • PID를 통해 프로세스를 제어할 수 있다.

     

    • 주요 ps출력 정보 항목
    USER : 프로세스를 실행시킨 사용자 ID
    PID : 프로세스 ID
    %CPU : 마지막 1분동안 프로세스가 아용한 cpu시간의 백분율
    %MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율
    VSZ : 프로세스가 사용하는 가상 메모리 크기
    RSS : 프로세스에서 사용하는 실제 메모리 크기
    STAT : 프로세스 상태
    START :프로세스가 시작된 시간
    TIME : 현재까지 사용된 CPU 시간 (분: 초)
    COMMAND : 명령어

     

    프로세스 중지시키기

    •  kill 명령어
      • 사용법
        1. kill% 작업번호(job number)
        2. kill 프로세스 ID(pid)
        3. 작업 강제 종료 옵션- 9

    예)

    # find / -name '*.py' > list.txt &
    [1] 57
    #kill -9 57

    kill 이라는 명령은 -9 옵션과 많이 쓰인다.

     

    -9 : 프로세스를 중지 시키다보면, 가능하면 중지를 시키지 않을 여러가지 조건들이 있다. 그래서 그냥 -9 옵션을 쓰지 않고, 프로세스 ID만 쓸 경우에는 해당 프로세스가 중지가 않되는 경우도 많다. 강제 무조건 죽이라는 옵션

     

     

    ps aux | grep bash

     

    => 이 명령을 보통 이렇게 많이 사용을 한다. 전체 프로세스 중에 특정 프로세스가 실행되고 있는지 궁금 할때,

    즉 예문에서는  bash라는 쉘이 실행되고 있는지 알아보려는 목적의 명령어라고 할 수 있다.

     

    자세히 말하면, 보통 해당 프로세스를 잘못 실행 시켰을때 진짜 그 프로세스가 실행되고 있는지 알아 보려고 사용한다. 그래서 명령어 실행 결과 그 프로세스가 돌아가고 있어서 해당 프로세스를 down 시킬려면 ps aux | grep bash 명령어를 통해서, PID를 확인한 다음에 kill이라는 명령어로 해당 프로세스를 중지한다. PID를 알아내서 해당 프로세스를 kill 할 수 있다.

     

    주로 사용하는 프로세스 명령(적어도 이 명령은 편하게 사용해야 함)

    • ps aux | grep 프로세스 명 : 프로세스가 실행 중인지를 확인하고, 관련 프로세스에 대한 정보 출력
    • kill -9 프로세스ID(pid) : 해당 프로세스를 강제로 죽임
    • 명령& : 터미널에서 다른 작업을 햐야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 background로 실행
    • [CTRL]+c : 프로세스 종료(실행 취소)

     

    [출처 - https://www.inflearn.com/course/%EC%84%9C%EB%B2%84%EA%B8%B0%EC%88%A0-%ED%92%80%EC%8A%A4%ED%83%9D-3/dashboard]

    댓글

Designed by Tistory.