Linux - 프로세스 관리

Jaeminst·2022년 2월 11일

프로세스 관리

  • 프로그램

    프로그램은 일반적으로 사용자가 원하는 일을 처리할 수 있도록 프로그래밍 언어를 사용하여 수행절차를 표현해 놓은 명령어들의 집합입니다.

  • 프로세스

    컴퓨터에서 실행되고 있는 프로그램을 가르키며, 운영체제로 부터 실행에 필요한 메모리를 할당 받아 프로그램의 코드를 처리합니다.

  • 멀티 프로세스

    하나의 프로그램을 실행 하면서, 동시에 다른 프로그램을 실행하는 것을 멀티 프로세스라고 하며, 애플리케이션 단위의 멀티 태스킹입니다.

  • 스레드

    스레드는 사전적 의미로 한 가닥의 실이라느 뜻입니다. 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름입니다.

  • 멀티 스레드

    운영체제는 두 가지 이상의 작업을 동시에 처리하기 위해 프로세스마다 CPU 및 메모리 자원을 적절히 할당하고 병렬로 실행합니다.
    즉, 하나의 프로세스가 두 가지 이상의 작업을 처리하는 것을 멀티 스레드라고 합니다.

  • 포그라운드 (Foreground)

    사용자가 프로세스를 실행할 때 화면에서 결과가 출력될 때까지 기다려야 하는 방식입니다.
    $ command
    $ ping goolge.com

  • 백그라운드 (Background)

    백그라운드로 프로세스를 실행하면 동시에 여러 프로세스를 실행할 수 있습니다.
    하지만, 터미널을 종료하면 실행중인 프로세스도 같이 종료됩니다.
    $ command &
    $ ping google.com &

  • nohup 커맨드 (no hang up)

    작업시간이 오래 걸리는 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.
    $ nohup command &
    $ nohup ping google.com &

프로세스 목록 확인

컴퓨터에서 실행되고 있는 프로세스의 목록을 확인하고, 관리할 수 있어야 한다.

  • ps (List Processes)

    프로세스에 대한 상태 정보를 표시하고 선택적으로 각 프로세스에서 실행 중인 스레드를 표시합니다. 기본적으로 사용자 터미널과 연결된 각 프로세스에 대해 ps는 프로세스 ID(PID), TTY, 사용된 프로세서 시간(TIME) 및 명령 이름(CMD)을 표시합니다.

    • PID : 프로세스 번호
    • TTY : 프로세스가 실행된 터미널의 종류와 번호
    • TIME : 프로세스 실행 시간
    • CMD : 실행되고 있는 프로그램의 이름(명령)
  • UNIX 방식
    ps -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.
    ps -f : 프로세스의 자세한 정보를 출력한다.
    ps -u uid : uid로 특정한 사용자에 대한 모든 프로세스의 정보를 출력한다.
    ps -p pid : pid로 지정한 특정 프로세스의 정보를 출력한다.

    ps -ef : 실행 중인 모든 프로세스의 자세한 정보를 출력한다.

    • UID : 프로세스를 실행한 사용자 ID
    • PPID : 부모 프로세스 번호
    • C : CPU 사용량(%)
    • STIME : 프로세스의 시작 날짜나 시간
    • TTY : 프로세스가 실행된 터미널의 종류와 번호
    • STAT : 프로세스 상태
  • BSD 방식
    ps a : 터미널에서 실행한 프로세스의 정보를 출력한다.
    ps u : 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력한다.
    ps x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.

    ps aux : 터미널과 시스템에서 실행한 프로세스의 자세한 정보를 출력한다.

    • USER : 사용자 계정 이름
    • %CPU : CPU 사용량(%)
    • %MEM : 물리적 메모리 사용량(%)
    • RSS : 사용하고 있는 물리적 메모리의 크기(kb)
    • VSZ : 사용하고 있는 가장 메모리의 크기(kb)
    • START : 프로세스 시작 시간
  • pstree
    컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때는 pstree 명령을 사용합니다.
    이 명령을 사용하면 프로세스를 트리구조로 도식화하여 확인할 수 있고 부모관계를 한 눈에 파악할 수 있습니다.

    • man pstree
  • jobs
    백그라운드에서 수행 중인 프로세스는 jobs 명령으로 확인할 수 있습니다.
    그 뿐만 아니라 jobs 명령을 통해 프로세스의 상태도 확인할 수 있습니다.

    • Running : 실행 중
    • Stopped : 일시 중단(Ctrl + Z 입력)
    • Terminated : 강제 종료(kill 명령 종료)
    • Done : 정상 종료
    • 필요하다면, fg %작업번호 명령을 사용하여 포그라운드로 전환할 수 있습니다.
  • kill
    터미널에서 프로그램이 실행되고 있을 때, Ctrl + C를 통해 프로세스를 종료시켜 본 적이 있을 겁니다. 프로세스에 이러한 이벤트를 전달하기 위해 사용하는 것을 시그널(Signal)이라고 합니다.

    1 SIG HUP : 재시작(자세한 루틴은 레퍼런스 참조 필수)
    2 SIG INT : 실행 중지(= Ctrl + C)
    9 SIG KILL : 강제 종료(최후의 수단)
    15 SIG TERM : 일반 종료 시그널
    18 SIG CONT : 정지된 프로세스 실행
    19 SIG STOP : 일시 정지
    20 SIG TSTP : 실행 정지 후 재실행 대기(= Ctrl + Z)
    레퍼런스 링크 : gnu.org 사이트의 sinals 관련

profile
DevOps !

0개의 댓글