Code States/TIL

[0313] 리눅스 운영체제 - 프로세스 관리

ki1111m2 2023. 3. 14. 09:46

학습 목표

관리자로서의 리눅스 ~ 자동화

  • 시스템 관리자가 하는 일을 이해할 수 있다.
  • 사용자 및 루트 권한에 대해 이해하고, 사용자 및 그룹 관리를 할 수있다.
  • 파일의 권한을 변경하고 관리할 수 있다.
  • 프로그램과 프로세스의 차이를 이해하고, 프로세스를 확인/종료할 수 있다.
  • 백그라운드 프로세스와 서비스를 이해하고, 관리할 수 있다.
  • cron 및 bash 스크립트를 이용해서 자동화를 할 수 있다.

프로세스, 스레드, 멀티스레드


  • 프로세스: 컴퓨터에서 실행되고 있는 프로그램
    • 사용자가 프로그램을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 ㅇ받아 프로그램의 코드를 실행함
    • 하나의 프로그램은 다중 프로세스를 만들기도 함
  • 스레드: 한 가지 작업을 실행하기 위해 순차적으로 코드가 실행되는 하나의 흐름
  • 멀티 스레드: 멀티 태스킹을 위하여 프로세스마다 CPU 및 메모리 자원을 적절히 할당하고 병렬로 실행
    • 대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬로 처리하거나, UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용하거나, 여러 클라이언트의 요청을 처리하는 서버를 개발할 때 등 사용됨

프로세스 관리 - ps, pstree


  • 프로세스 실행 방식
    • 포그라운드(foreground)
      • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식
      • 한 번에 하나의 명령을 실행하므로 동시에 여러 프로세스를 실행하기 어려움
    • 백그라운드(background)
      • 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행할 수 있음
      • 명령의 실행 시간이 많이 걸릴 것으로 예상되거나, 명령을 실행한 후 다른 작업을 해야할 경우 사용
      • 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있음
      • 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됨
      • nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행함
  • 프로세스 목록 확인
    • ps
      • 현재 실행 중인 프로세스의 목록 확인 가능
      • PID: 프로세스 번호
      • TTY: 프로세스가 실행된 터미널의 종류와 번호
      • TIME: 프로세스 실행 시간
      • CMD: 실행되고 있는 프로그램의 이름(명령)
      • 옵션 - UNIX 방식, 보통 프로세스의 관계를 보기 위해 사용
        • ps -e: 시스템에서 실행 중인 모든 프로세스의 정보 출력
        • ps -f: 프로세스의 자세한 정보 출력
          • UID: 프로세스를 실행한 사용자 ID
          • PPID: 부모 프로세스 번호
          • C: CPU 사용량(%)
          • STIME: 프로세스의 시작 날짜나 시간
          • TTY: 프로세스가 실행된 터미널의 종류와 번호
          • STAT: 프로세스 상태
        • ps -u uid: uid로 특정한 사용자에 대한 모든 프로세스의 정보 출력
        • ps -p pid: pid로 지정한 특정 프로세스의 정보 출력
      • 옵션 - BSD 방식, 프로세스의 상태를보는 용도로 사용
        • ps a: 터미널에서 실행한 프로세스의 정보 출력
        • ps u: 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보 출력
        • ps x: 시스템에서 실행 중인 모든 프로세스의 정보 출력
          • USER: 사용자 계정 이름
          • %CPU: CPU 사용량(%)
          • %MEM: 물리적 메모리 사용량(%)
          • RSS: 사용하고 있는 물리적 메모리의 크기(kb)
          • VSZ: 사용하고 있는 가상 메모리의 크기(kb)
          • START: 프로세스 시작 시간
  • pstree
    • 컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때 사용
    • 트리구조로 도식화하여 프로세스 확인 가능
    • 부모 관계 한 눈에 파악 가능
    • macOS의 경우, brew install pstree 명령어 이용하여 설치

프로세스 관리 - kill


  • 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해 사용
  • kill -시그널번호(시그널명) %작업번호(PID)
    • HUP: 재시작
    • INT: 실행 중지 시그널, ctrl + c
    • KILL: 프로세스 강제 종료
    • TERM: 프로세스 정상 종료(기본 명령)
    • CONT: 정지된 프로세스 실행
    • STOP: 터미널에서 입력되는 정지 시그널
    • TSTP: 실행 정지 후 재실행 대기, ctrl + z

프로세스 관리 - jobs


  • 백그라운드에서 수행 중인 프로세스 확인
  • +: 현재 처리 중
  • -: 다음에 작업할 프로세스
  • 프로세스의 상태
    • Running: 실행 중
    • Stopped: 일시 중단(ctrl + z 입력)
    • Terminated: 강제 종료(kill 명령 종료)
    • Done: 정상 종료
  • fg %작업번호 명령을 사용하여 포그라운드로 전환 가능