본문 바로가기
Linux

9. Linux 기본 명령어(프로세스)

by Choraengyi 2016. 11. 17.
728x90

 Linux 기본 명령어 프로세스관련 명령어에 대해 알아보겠습니다.


1. ps


ps 명령어는 동작중인 프로세스 상태를 출력해줍니다. 다른 명령어들과의 차이라면 -(대쉬)가 안들어간 옵션이 있다는 


것인데, 이는 전통유닉스(System V, BSD)에 따라 나뉩니다. System V 의 경우 -(대쉬)를 사용하고, BSD 같은 경우는 


-(대쉬)가 없습니다. 물론 출력결과도 조금씩 다릅니다. 자신의 상황에 맞게 쓰시면 됩니다.


사용법

ps [option]


 옵션

의 미 

a

 터미널과 연관된 프로세스 출력

e

 프로세스에 관련된 환경 변수 정보 출력

f

 프로세스간 상속관계를 트리형식으로 출력

l

 프로세스의 정보를 길게 보여줌

u

 프로세스의 소유자를 기준으로 출력

x

 터미널에 종속되지 않는 프로세스 출력

-a 

 세션리더를 제외하고 터미널에 종속되지 않은 모든 프로세스 출력

-A

 모든 프로세스 출력

-C [process]

 뒤에 입력된 프로세스만 출력

-e

 모든 프로세스 출력

-f

 유닉스 스타일로 출력해줌

-o [value]

 출력 포맷을 지정함, 값에는 pid, tty, time 등을 지정한다.

          BSD

     System V


먼저 BSD 계열인 aux옵션부터 사용해 보았습니다. ax로 모든 프로세스를 출력해 주었고 u옵션으로 소유자 기준으로 정렬


해준 것입니다. 



다음은 System V 계열입니다. ef 명령을 이용하여 모든프로세스를 유닉스 스타일로 출력해 주었습니다.



ps 로 프로세스 출력했을때 각 속성에 대해 알아보겠습니다. BSD, SystemV 합쳐서 작성하겠습니다.


 속성

의 미 

USER

 프로세스의 소유자  

UID 

 프로세스의 소유자 

PID 

 프로세스 식별 번호 

PPID 

 부모프로세스의 PID 

%CPU

 CPU사용 비율 추정치 

%MEM 

 MEM 사용 비율 추정치 

VSZ 

 가상메모리 사용량 

RSS 

 실제 메모리 사용량 

TTY 

 프로세스와 연결된 터미널 

STAT 

 현재 프로세스의 상태코드 

START 

 프로세스 시작 시간 

TIME 

 총 CPU 사용시간 

COMMAND 

 프로세스의 실행 명령행 

STIME 

 프로세스가 시작된 시간 

 짧은 기간동안의  CPU 사용률 

 

속성중에서 STAT 속성은 여러가지 상태가 있습니다. 이 상태도 알아보겠습니다.


 상태

의 미 

R

 실행중 또는 실행될 수 있는상태 

S

 Sleep 상태로서 특정 이벤트가 끝나기를 기다림 

D

 디스크 I/O에 의해 대기중인 상태 

T

 정지 상태 

Z

 좀비프로세스를 뜻함, 작업이 종료되었으나 부모프로세스로부터 회수되지 않아 메모리 차지중인 상태 

X

 죽어있는 상태 

<

 우선순위가 인위적으로 높아진 상태 (nice 된것 아님)

N

 다른 사용자에의해 인위적으로 우선순위가 높아진 상태 

L

 메모리 안에서 페이지가 잠금된 상태 

s

 세션 리더 

l

 멀티 쓰레드 상태 

+

 포어그라운드 프로세스 그룹 


추가적인 내용은 man ps 로 참고 하시면 됩니다.


2. pstree


프로세스 상태를 트리 구조로 출력해 줍니다. 


사용법

pstree [option]


 옵션

의 미 

-a

  각 프로세스의 명령행도 보여줌

-h

 현 프로세스와 조상프로세스를 하이라이트 해서 보여줌 

-n

 PID값으로 정렬해서 보여줌 

-p

 PID값을 같이 보여줌 


pstree -h 명령을 사용하여 조회해 보았습니다. 진한글씨가 현프로세스와 조상프로세스가 하이라이트된 상태이고 왼쪽에


위치해있을 수록 높은 조상입니다.





3. top


동작중인 프로세스 상태를 실시간으로 출력해줍니다. 추가적으로 CPU, MEM 등도 확인 가능합니다.


사용법

top [option]


 옵션

의 미 

-d [time]

 갱신 시간을 설정함(초)

-p 

 특정 PID 값의 프로세스를 모니터링 


top명령을 하시면 아래와 같이 나타납니다.


첫째줄 - 현재시간, 서버가동 후 유지시간, 현재 접속 사용자, 최근 1, 5, 15분 동안 시스템 부하

둘째줄 - 프로세스의 상태(총 프로세스, 실행중, sleep, stop, 좀비프로세스)

셋째줄 - cpu 상태

넷째줄 - MEM 상태

다섯째줄 - swap메모리 상태



검은바탕으로 되있는줄 부터는 실시간 모니터링 입니다. 검은 바탕줄에 있는것은 속성인데 전에 ps에서 설명한 속성과 


같은것을 제외하고 알아보겠습니다.


옵션

의 미 

PR

 우선순위 

NI 

 Nice value(-20~19 사이의 숫자이며 값이 작을수록 우선순위가 높음) 

VIRT 

 작업에 사용된 가상 메모리 총사용량 

RES 

 프로세스가 사용하는 실제 메모리양 

SHR

 프로세스가 사용하는 공유 메모리양 

 현재 프로세스의 상태를 나타냄 

TIME+

 프로세스가 시작하여 사용한 CPU시간 


top실행상태의 명령은 거의다 보기 옵션이므로 따로 작성하지는 않겠습니다. top명령 실행 상태에서 h 또는 ? 를 입력


하시면 도움말을 보실 수 있습니다.


4. jobs


백그라운드로 실행중인 프로세스나 중지된 프로세스의 목록을 출력해 주는 명령입니다.


사용법

jobs [option]




5. fg


백그라운드 프로세스를 포어그라운드 프로세스로 전환하는 명령어 입니다.


**여기서 백그라운드와 포어그라운드를 조금 알아보겠습니다.


포어그라운드 : 보통 터미널에서 명령어를 입력하면 그 명령이 끝날때 까지 다른 명령어를 입력할 수가 없습니다. 이렇게 


  대화식으로 하나씩 주고 받게 되는데 이를 포어그라운드라고 생각하시면 됩니다.


백그라운드 : 반면 백그라운드는 명령어를 입력하면 다른 명령어도 실행이 가능합니다. 백그라운드 의미에서 볼 수 있듯이 


뒤에서 실행된다고 생각하시면 됩니다. 물론 터미널이 닫히거나 로그아웃 될경우 종료 됩니다.


백그라운드는 명령어의 맨 끝에 & 를 붙여 사용합니다.


사용법

fg 작업번호


6. bg


포그라운드 프로세스를 백그라운드로 바꾸어주는 명령입니다. 실행중인 명령에서 Ctrl + z 를 누른후(일시정지) bg명령을 하


시면 됩니다.


사용법

bg


아래와 같이 한 명령을 실행시키고 일시중지(Ctrl + z) 시킨 후에 bg명령을 입력하면 명령어에 & 이 붙어 자동으로 


백그라운드로 실행됩니다.




7. nohup


nohup 명령은 터미널이 닫히거나 사용자가 로그아웃해도 실행중인 프로세스를 백그라운드로 유지시켜주는 명령입니다.


'nohup.out' 파일에 출력과 에러를 기록하고, 백그라운드로 유지시키기 위해서 맨 뒤에 & 를 붙여야 합니다.


사용법

nohup 명령 &


8. kill  


프로세스에 특정 시그널을 보내는 명령입니다. 프로세스를 종료시킬때 쓰는 명령으로 옵션없이 사용하면 


종료신호(15, SIGTERM)를 보냅니다.


사용법

kill [option] [signal] PID or 작업번호


kill을 알아보기 전에 시그널을 간단히 알아보고 가겠습니다.


시그널 목록은 kill -l 명령으로 조회가 가능합니다.



몇가지 많이 사용하는 시그널을 알아보겠습니다.


 번호

시그널 

의 미 

1

SIGHUP

 터미널에서 접속이 끊겼을때 보내지는 시그널, 변화된 내용을 적용하기 위해 재시작 할 때 사용된다. 

2

SIGINT

 인터럽트 시그널로 실행을 중지시킴, Ctrl + c 입력시 보내지는 시그널 

3

SIGQUIT

 실행 중지 시그널로서 Ctrl + \ 입력시 보내지는 시그널 

9

SIGKILL

 프로세스를 강제로 종료 시키는 시그널 

15

SIGTERM

 kill의 기본 시그널로 정상 종료 시키는 시그널 

18

SIGCONT

 시그널에 의해 정지된 프로세스를 다시 실행시키는 시그널 

19

SIGSTOP

 정지 시그널 

20

SIGTSTP

 일시정지 시키는 시그널로서 Ctrl + z 입력시 보내지는 시그널 


옵션은 위에서 한 -l 옵션과 시그널 이름을 지정하는 옵션인 -s 가 있습니다.


예시로 프로세스를 강제종료 시키는 예시를 들겠습니다.


find 명령을 하고 일시 정지 후에 9번 시그널(SIGKILL)을 이용해 해당 프로세스를 강제 종료하는 예시입니다.




9. killall 


데몬의 여러 프로세스를 한번에 종료하는 명령어 입니다. kill과 마찬가지로 시그널 미지정시 종료신호(15, SIGTERM)를 


보냅니다.


사용법

killall [option] [signal] 프로세스


옵션

의 미 

-l 

 시그널의 종류 출력 

-s 

 시그널의 이름을 지정하는 옵션 

-v 

 시그널 전송 결과를 출력 

-w 

 시그널을 받은 프로세스들이 종료 될때까지 대기



10. nice


프로세스의 우선순위를 변경하는 명령어, 기본값은 0이며 범위는 -20~19 입니다. 숫자가 작을수록 우선순위가 높습니다.


사용법

nice [option] 프로세스명


옵션대신에 사용예를 보여 드리겠습니다.


우선 그냥 nice는 설정된 우선순위 값입니다.(NI) 그다음 bash 프로세스에 nice명령어를 쓰면서 기본 증가 값인 10이 


추가되어 NI값이 10이 되었습니다. 이를 --10 으로 다시 0으로 감소 시켰습니다.


참고로 대시(-) 하나는 증가 두개는 감소 입니다.



11. renice


실행중인 프로세스의 우선순위를 변경합니다. nice와의 차이는 nice는 명령실행시 새로운 프로세스가 추가 발생하지만 


renice는 기존의 프로세스를 교체합니다. 또한 PID를 사용합니다. 또 다른 차이는 증감이 아닌 지정한 값으로 바로 지정


된다는 점입니다.


사용법

renice [option] NI PID


NI는 -20 ~ 19 의 값인 우선순위 값입니다.


비교설명 하면서 예시도 들겠습니다. 먼저 nice명령부터 예로 들겠습니다. 


아래와 같이 nice로 우선순위 조정시 새로운 프로세스가 생기고 그 프로세스가 NI값이 증가합니다.



반면, renice로 해보겠습니다. 


renice는 해당 PID를 지정해 그 프로세스 NI값을 바꾸어 줍니다.



LInux 기본 명령어 프로세스 관련 명령어 였습니다.



728x90
반응형

댓글