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 |
프로세스가 시작된 시간 |
C |
짧은 기간동안의 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 |
프로세스가 사용하는 공유 메모리양 |
S |
현재 프로세스의 상태를 나타냄 |
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 기본 명령어 프로세스 관련 명령어 였습니다.
'Linux' 카테고리의 다른 글
Linux 허가권(Permission) (0) | 2016.11.22 |
---|---|
10. Linux 기본 명령어(압축관련) (0) | 2016.11.19 |
8. Linux 기본 명령어(텍스트 파일)_2 (0) | 2016.11.11 |
7. Linux 기본 명령어(텍스트 파일) (0) | 2016.11.10 |
6. Linux 기본 명령어(파일관련 ls, mv, cp, rm, touch, file, find) (0) | 2016.11.08 |
댓글