유용한 모든 것

리눅스마스터 2급 2차 [프로세스 유틸리티]

뭉지(moonz) 2020. 8. 11. 20:44
반응형

오늘 복습할 내용은

프로세스 관련 명령어 (ps, pstree, jobs, bg/gf, kill, killall, nice, renice, top, nohub, tail)

스케줄링과 cron (crontab)

 

프로세스 관련 명령어

# ps

현재 실행중인 프로세스의 상태를 보여주는 명령어. (CPU 사용도가 낮은 순서로 출력됨.)

 

(1) 옵션없이 : 자신의 터미널에서 실행되고 있는 프로세스들의 관련 정보(PID | TTY | TIME | CMD 출력)만 나타냄.

PID : 프로세스 식별번호  ex) 3056

TTY : 프로세스와 연결된 터미널 번호 ex)pts/19

TIME : 총 CPU 사용 시간 ex) 00:00:00

CMD : 실행 명령어 ex) ps

 

(2)옵션 a : 현재 실행중인 모든 프로세스 출력 (all) - 외부 터미널에서도 실행중인 모든 프로세스!

 

 

//현재 터미널 외에도 출력

- ps x(접속된 터미널뿐만 아니라 사용되고 있는 모든 프로세스들을 출력)는 실행된 모든 프로세스를 출력하고

  ps a는 (외부터미널에서도)현재 실행중인 모든 프로세스! 

(3) 옵션 e : 모든 프로세스 정보

(4) 옵션 u : 사용자 이름과 프로세스 시작 시간 출력

(5) 옵션 l : 자세한 정보 출력 (ps aux와는 또다른 출력 결과)

필드 설명을 해보자면

<F> 프로세스 플래그로 8진수 값의 합을 나타냄.

01 주기억장치 내에 있음
02 시스템 프로세스
04 주기억장치 내에서 잠김(Locked)
10 스왑(Swap)되고 있음
20 다른 프로세스에 의해 추적되고 있음

<S> 프로세스 상태 표시

-R : Running    -T : Terminated    -S : Sleeping    - Z : Stopped     -W : Waiting     -I : Intermediated

 

<C> 짧은 시간동안의 CPU 사용률

<PRI> 실행 우선순위 값. 값이 작을수록 우선순위가 높음.

<NI> NICE 우선순위를 계산할 때 사용하는 nice값 (기본이 0)

<ADDR> 프로세스의 주기억장치 내의 주소

<SZ> 프로세스 크기 (단위는 블록)

<WCHAN> 프로세스가 대기/수면상태에서 기다리는 사건 (실행중인 프로세스는 공백)

 

더보기

Q.책으로 공부하다 궁금한 점.<'ps l' 과 'ps -l'의 차이점은?>

l옵션은 BSD 계열이고, -l은 System V 계열이다. BSD계열이라고해서 Sys V에서 지원이 안되는건 아니지만 운영체제마다 조금씩 표기법이 상이하다는 것! 둘 다 long format을 보여주는 옵션이다!

자주 사용하는 ps 옵션은 ps ax, ps aux

특히 특정 프로세스의 상태 정보를 확인하려면, ps ax | grep httpd (httpd는 프로세스들의 상태를 나타냄)

 

ps aux 를 하게되면 더 구체적인 정보(ps 소유자명, CPU사용 비율 추정치 등)가 출력됨.

기본적인 필드 빼고 적어보자면

<%CPU> CPU 사용 비율 추정치

<%MEM> 메모리 사용 비율 추정치

<VSZ> 페이지 단위의 가상메모리 사용량

<RSS> 실제 사용된 메모리량 (Resident Set Size)

<STAT> 현재 프로세스 상태 (P:수행가능/수행 중 , R : 현재 실행 상태, S: 잠든 상태, 20초 이상 된 상태, D: I/O작업이 끝나기를 기다리면서 정지된 상태, T: 일시정지된 상태, Z: 좀비 프로세스)

<START> 프로세스 시작 시간

<TIME> 총 CPU 사용 시간

 

# pstree

◦ 실행 중인 프로세스를 트리구조로 나타내는 명령어

◦ 옵션

pstree -p PID 표시하면서 트리구조 출력
pstree -n PID를 정렬해서 표시 (오름차순 정렬)
pstree -a 명령행 인자를 포함한 정보를 트리구조에 표시
pstree -h 현재 프로세스와 부모프로세스를 음영으로 강조해서 표시 (highlight)

pstree -pn : PID를 표시하고 PID정렬을 한 ps 트리구조

 

 

 

 

 

 

 

 

 

 

pstree -npa : PID 표시 & PID 정렬 & 명령행 인자를 포함하여 출력한 ps 트리구조

 

 

 

 

 

 

# jobs

◦ 작업이 중지된 or 백그라운드로 진행중인 or 변경되었지만 보고되지않은 상태 등을 표시.

옵션 (옵션없이 jobs : 백그라운드로 실행 중인 프로세스 확인)

jobs -l GID를 state 필드 앞에 표시
jobs -n 프로세스 그룹 중 대표 프로세스 ID 표시
jobs -p 프로세스 ID를 한 행씩 표시

3364 가 GID! 출력 목록에서 + 는 현재 작업 실행, - 는 앞으로 실행될 작업(대기상태작업) 을 의미!

# bg와 fg

(1) bg : 현재 실행 중인 포그라운드 -> 백그라운드프로세스로의 전환.

◦ 포그라운드에서 백그라운드로 전환시 :

   1. 먼저 실행중인 작업을 일시정지. (Ctrl + Z)

   2. bg [%]작업번호 명령 수행.

 

(2) fg : 현재 백그라운드로 실행중인 명령어를 포그라운드로 전환.

◦ 백그라운드에서 포그라운드로 전환 시 : fg [%]작업번호  ('fg'만 입력 시 현재 bg로 실행중인 명령어를 fg로 전환.)

* 포그라운드 작업 종료하려면 Ctrl + C

 

# kill

◦ kill [옵션] [시그널번호 or 시그널 이름] [PID or %작업번호] ->프로세스 종료

kill -l 시그널 리스트 출력
kill -s 시그널번호 or 시그널 이름 전달할 시그널의 종류 지정
kill -1 -HUP, 프로세스를 재시작  (시그널번호: 1)
kill -9 프로세스 강제 종료

예시)

다른 터미널에서 top을 실행하고 ps -a 명령어를 해보면 실행중인 프로세스로 top이 뜬다. 프로세스를 강제 종료 시키는 시그널넘버 9로 PID 3398를 kill하니 죽었음. 이라고 뜬다!!

 

 

 

 

 

# kilall

◦ 같은 데몬의 여러 프로세스를 한번에 종료시킬 때 사용.

 

 

 

블로그로 복습하는 방식을 한번 쭉 리눅스 공부하고 다시 앞에서부터 정독할때 해야할것같아서 잠시 리눅스 글은 안녕!

반응형