[Proc] Priority, nice , $ ps, $pstree,$ pgrep, $ renice

markyang92·2021년 9월 30일
0
post-thumbnail

$ ps

  • 현재 단말기에서 프로세스 목록 출력
$ ps
  • $ ps 명령을 사용하면 현재 단말기에서의 프로세스 목록만 뜸

$ ps -o pid,command

$ ps -o [pid][command][...]
  • $ ps를 사용하되, -o 옵션으로 매개변수로 넣은 것으로 출력됨
  • 예: pid, command 만 출력
$ ps -o pid,command

-l: 우선순위

$ ps -l

  • 우선순위는 -20 ~ 20 으로 부여 가능하며 20{-20 } 의 우선 순위가 가장 높다.

-f: 프로세스 상세 정보

  • $ ps -f 옵션을 주면 현재 단말기에서 프로세스 상세목록 출력
UIDPIDPPIDCSTIMETTYTIMECMD
프로세스를
실행 시킨
사용자
PID부모 PIDCPU 사용량 (%)프로세스
시작 시간
프로세스가
실행된 터미널
프로세스 실행시간실행 중인 프로세스 이름(명령)

$ ps m: 스레드 출력

  • 스레드도 출력하고 싶다면 $ ps m 옵션을 붙여 사용하자!
$ ps m -o pid,tid,command


-e: 전체 목록 출력

  • $ ps -e: 시스템에 실행 중모든 프로세스 출력

-ef: 전체 + 자세히

  • $ ps -ef 시스템에 실행 중모든 프로세스 상세 목록 출력

-aux: 전체+실행상태+BSD계열


항목설명
UIDsystem V 계열에서 나타나는 항목 프로세스 소유자 명
USERBSD 계열에서 나타나는 항목 프로세스 소유자 명
PID프로세스 ID
%CPUCPU 사용 비율 추정치 (BSD)
%MEM메모리 사용 비율 추정치 (BSD)
VSZVirtual-memory Set Size: KB 단위또는 페이지 단위 가상메모리 사용량
RSSResident Set Size: 실메 메모리 사용량
TTY프로세스와 연결된 터미널
STAT현재 프로세스 상태

STAT설명
D디스크 관련 대기 상태(BSD)
Iidle 상태
K사용가능한 커널 프로세스 (AIX)
P페이지 관련 대기 상태 (BSD)
Nnice되어진 상태
RRunning: 실행 중 혹은 실행될 수 있는 상태
Ssleep 상태
T정지된 상태 (suspended)
Wswap out된 상태
X메모리 확보를 위한 대기상태 (System V)
ZZombie 프로세스
>우선순위가 인위적으로 높아진 상태 56/58

ps auxf: tree형태로 보여줌


$ pstree: ps를 tree로 보여줌

$ pstree -p: pid를 보여주는 tree

$ pstree -s: parent

$ pstree PID: PID 기준으로 tree

$ pstree -p PID: PID 기준으로 tree + pid

$ pstree -ps PID: PID 기준으로 tree + pid + parent

  1. zshell 에서 pstree 실행

  1. zshell에서 python 스크립트 실행 -> 내부 subprocess.Popen("pstree -ps $$",shell=True,executable="bin/bash")으로 pstree실행


  1. bash shell 스크립트 동작

$ pgrep : 프로세스 명으로 PID 찾기

$ pgrep [process]
  • process 이름으로 검사해서 pid 출력

  • 예: rsync PID 찾기
$ pgrep rync

$ pgrep -a : full CMD 출력

$ pgrep [process] -a

  • 예: rsync PID 찾고 CMD도 출력
$ pgrep rsync -a
  • rsync 명령을 사용하는 PID 쭉 출력됨

  • 주의!! process 명만 써야 검색됨
    • 예: rsync (process 명)만 입력 해야하고, rsync -aq (process -option 등) 같이 입력하면 검색안됨

우선순위 (PR, NI)

  1. PRiority
  • 커널은 특정 프로세스에 다른 프로세스보다 더 많은 CPU시간 부여가능하다.
  • 우선순위는 -20 ~ 20 으로 부여 가능하며 20{-20 } 의 우선 순위가 가장 높다.
  • 하지만 PR 값으로만으로 프로세스CPU 배정 확정이 다가 아니다. 프로그램이 실행되는 동안 해당 프로세스가 소모하는 CPU 시간의 양에 따라 우선순위는 자주 변경된다.

  1. NIce
  • 커널은 우선순위에 Nice를 추가하여 해당 프로세스가 보유할 다음 시간대를 결정한다.
  • NIce 우선 순위: -20 ~ 20, 20{-20}의 우선 순위가 가장 높다.
    • 0 ~ 20 : 일반 유저가 부여 가능
    • 0 : default
    • -20 ~ -1 : 슈퍼 유저만이 부여 가능
  • 1) 대화형 세션이 방해 받지 않기를 원하면서 뒤에서는 2) 큰 규모의 계산을 실행하고 있다고 가정
    • 해당 프로세스가 다른 프로세스에게 자리를 양보하고, 오직 다른 작업이 이뤄지지 않을때에만 실행되도록 하려면 renice 명령으로 NI를 20으로 변경할 수 있다.(우선 순위을 제일 낮추는 행위)
$ renice 20 <pid>

$ renice: Nice 변경

$ renice <Nice> <PID>
  • 해당 PIDNice 값을 <Nice> 값으로 변경

profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글