프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
05_Study(프로세스 관리 ps, pstree)
05_Study(프로세스 관리 ps, pstree)

2023. 3. 13. 11:41부트캠프/DevOps (TIL)

프로세스 실행방식

 

프로세스 실행방식에는 두 가지 방식이 있습니다. 포그라운드와 백그라운드 입니다.

먼저 포그라운드 방식은 사용자가 명령어를 입력하면 터미널에서 작업을 입력한 명령을 해석하여 실행합니다. 그리고 결과를 화면에 출력합니다. 그러면 출력된 결과 화면을 보고 다시 명령을 입력하는 대화식 작업을 수행합니다. 입력한 명령어 실행이 결과가 나올 때 까지 기다리는 방식이 바로 포그라운드 방식 입니다.  포그라운드 프로세스라고 말하며 작업 제어 측면에서는 포그라운드 작업이라고 말합니다. 포그라운드 작업은 다른 명령을 입력할 수 없고 기다려서 입력해야 한다. 일반적 명령을 실행 입니다. 아래 명령어를 입력하면 sleep이 풀릴때까지 다음 명령을 실행 할 수 없습니다.
 

백그라운드 기능은 프로세스가 실행되는 동안 다른 프로세스가 실행 가능합니다. 하나의 쉘에서 여러 개의 프로세스를 동시에 실행할 수 있는 방식입니다. 백그라운드 방식으로 명령어를 실행하면 곧바로 다음 명령어를 실행 가능합니다. 필요한 여러 작업 동시에 진행하면서 포그라운드 작업을 계속 진행할 수 있습니다. 백그라운드 작업은 해당 명령어 처리가 오래 걸릴걸 대비해 백그라운드를 이용하면 여러 작업을 동시에 수행할 수 있다. 실행 방법은 & 기호를 추가하면 됩니다. 아래 명령어를 입력하면 곧 바로 다음 명령어를 실행 가능합니다.

하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.

 

프로세스 목록 확인

위와 같이 컴퓨터에서 실행되고 있는 프로세스의 목록을 확인하고, 관리 할 수 있어야 합니다. 따라서 목록을 확인하기 위한 명령의 사용법과 이때 알고 있어야 하는 기본적인 용어를 함께 살펴보겠습니다.

 

ps

 

ps 명령을 사용하여 시스템에서 활성 프로세스의 상태를 확인하고, 프로세스에 대한 기술적 정보를 표시할 수 있습니다. 이 데이터는 프로세스 우선 순위 설정 방법 결정과 같은 관리 작업에 유용합니다.

사용하는 옵션에 따라 ps 명령은 다음 정보를 보고합니다.

  • 프로세스의 현재 상태
  • 프로세스 ID
  • 상위 프로세스 ID
  • 사용자 ID
  • 스케줄링 클래스
  • 우선 순위
  • 프로세스의 주소
  • 사용된 메모리
  • 사용된 CPU 시간

옵션을 섞어서 사용하면 더 디테일한 내용을 볼 수 있고, 사용할 수 있는 옵션의 종류는 다음과 같습니다.

  • UNIX 방식
    • ps -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.
    • ps -f : 프로세스의 자세한 정보를 출력합니다.
    • ps -u uid : uid로 특정한 사용자에 대한 모든 프로세스의 정보를 출력한다.
    • ps -p pid : pid로 지정한 특정 프로세스의 정보를 출력한다.
  • BSD 방식
    • ps a : 터미널에서 실행한 프로세스의 정보를 출력한다.
    • ps u : 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력한다.
    • ps x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.

이러한 옵션은 방식 별로 섞어서 사용할 수 있으며, 보통 프로세스의 관계를 보기 위해서 UNIX 방식인 ps -ef를, 프로세스의 상태를 보는 용도로는 BSD 방식인 ps aux를 가장 많이 사용합니다. 위의 명령에 따른 결과로 다양한 항목이 출력됩니다.

필드 설명
UID
프로세스 소유자의 유효 사용자 ID입니다.
PID
프로세스 ID입니다.
PPID
상위 프로세스 ID입니다.
C
스케줄링을 위한 프로세서 사용률입니다. 이 필드는 -c 옵션이 사용되면 표시되지 않습니다.
CLS
실시간, 시스템 또는 시간 공유와 같이 프로세스가 속하는 스케줄링 클래스입니다. 이 필드는 -c 옵션을 사용할 때만 포함됩니다.
PRI
커널 스레드의 스케줄링 우선 순위입니다. 숫자가 높을수록 높은 우선 순위를 나타냅니다.
NI
스케줄링 우선 순위에 영향을 주는 프로세스의 nice 번호입니다. 프로세스가 더 “nice”해지면 우선 순위가 낮음을 의미합니다.
ADDR
proc 구조의 속성입니다.
SZ
프로세스의 가상 주소 크기입니다.
WCHAN 
프로세스가 유휴 상태인 이벤트 또는 잠금의 주소입니다.
STIME
프로세스의 시작 시간(시, 분, 초)입니다.
TTY
프로세스 또는 상위 프로세스가 시작된 터미널입니다. 물음표는 제어 터미널이 없음을 나타냅니다.
TIME
시작된 이후 프로세스에서 사용한 총 CPU 시간입니다.
CMD
프로세스를 생성한 명령입니다.
  • ps -f의 출력 정보
    • UID : 프로세스를 실행한 사용자 ID
    • PPID : 부모 프로세스 번호
    • C : CPU 사용량(%)
    • STIME : 프로세스의 시작 날짜나 시간
    • TTY : 프로세스가 실행된 터미널의 종류와 번호
    • STAT : 프로세스 상태
  • ps a, u, x의 출력 정보
    • USER : 사용자 계정 이름
    • %CPU : CPU 사용량(%)
    • %MEM : 물리적 메모리 사용량(%)
    • RSS : 사용하고 있는 물리적 메모리의 크기(kb)
    • VSZ : 사용하고 있는 가상 메모리의 크기(kb)
    • START : 프로세스 시작 시간

pstree

 

컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때는 pstree 명령을 사용합니다. 이 명령을 사용하면 다음과 같이 트리구조로 도식화하여 프로세스를 확인할 수 있고 부모 관계를 한 눈에 파악할 수 있습니다. 이 명령에 사용되는 옵션에 대해서는 man pstree 명령을 통해 학습하시기 바랍니다.

 

출처

https://docs.oracle.com/cd/E24846_01/html/E23088/spprocess-1.html