Linux - 21. 프로세스 관리
by jennysgap프로세스 기본적이 개념
메모리 4단계
화면 (결과값을 출력)
REM > L2Cache > register > frame buffer
REM (4KB = 페이지)
페이징
- REM 에서 L2cache 넘어가고 계산할 때는 거꾸로 가는 상황
- in 프로세스가 들어옴
- out 프로세스가 아예꺼짐 (나감, 퇴출)
메모리를 사용할 때는 무조건 우선순위 (priority)가 발생한다.
우선순위에 따라 cpu를 사용할 수 있는 권한들이 생긴다.
우선순위가 없으면 실행이 안됨. PID 값이랑은 상관없음 (PID =/= priority)
우선순위는
1. 들어오는 순서 (일반 유저 모드)
2. 프로그램 자체가 중요할 경우 (왕자 모드 - 태생부터 귀족 ㅋㅋㅋ)
(위 두가지 모두 사용한다.)
interrupt
- 내가 실행 하려고 했는데, 나보다 높은 우선순위가 나타남 그러면 급 정지 모드
- 대기...... 를 당할 수 있다. ---> wating 상태
- 계속 반복될 경우 kill 당함 , end
프로세스 보는 법
# ps -elf | more
- e : 길게
- l : long 더 길게
- f : 자세하게
프로세스 정보가 존재하는 디렉터리
# ls /proc
프로세스 선택해서 보기
# ps -ef | grep [넘버나 프로세스 이름]
# ps -ef | grep 17
서버용 프로그램은 우선순위가 낮은 경우가 많음.
SZ : size 정보 (bite) 1조각 사이즈 (필요한 부분, 일부만 올림)
그렇다면 진짜 사이즈가 이거일까? nope
공격할 때, 사이즈를 봄. 상주하는 크기는 원래 크기보다 클 수 없음
토탈 사이즈 까지만 커질 수 있음. 그러한 프로그램은 나중에 분석을 해야함
S : sleepping 상태
프로세스 종료 방법
1. kill 명령
# kill [-option, -signal] PID
# kill -l : 현재 사용중인 시그널 보기
* 시그널은 작업을 위해 전달되는 신호형태를 의미하며, 리눅스에는 64개의 시그널을 사용함.
# kill -15 PID : 해당 시그널한테 15를 부여
# kill -KILL PID : -KILL 이라는 시그널을 부여
* 프로세스 제거에 사용되는 시그널 : 3, 9, 15, 1
[주의!] 죽이는 것은 아니고, 죽도록 유도함 (결국 죽는건 프로세스 스스로)
1 = 서버(구성정보 파일을 삭제) 일반 명령(구성정보가 없으니 그냥 프로세스 없애기)
부재시간 줄이는 방법으로 사용함. - HUP : (이거랑 같은 의미)
15 = 정상적으로 죽여라. 지금 하고 있는 작업 다 끝내고 죽어라
3 = 오류날 확률이 있으나 참고
# sleep 100000 & --> 연습용 명령 (& 붙이는 이유, kill 명령 내릴 때 어떤 시그널로 죽였는지 나옴)
# sleep 1000000 &
# sleep 10000000 &
# sleep 100000000 &
# ps -df | grep sleep --> PID 확인
# kill -1 PID --> 끊어짐 # kill -HUP PID # kill -SIGHUP PID (왼쪽이랑 같은 의미)
# kill -3 PID --> 종료 (core dumped = 에러)
# kill -9 PID --> 죽었음
# kill -15 PID --> 종료됨
# ps -df | grep rsyslogd --> PID 확인
# kill -HUP PID
# ps -ef | grep rsyslogd --> 상위 출력과 PID 비교 (같음)
* 백그라운드인지 포그라운드인지 모르기 때문에 (jobs 명령어를 이용)
* ps 명령어에서는 확인 불가능
# jobs
# jobs -l
# kill PID
# kill %1 (jobs 에 나오는 1번 죽임)
서버 같은 경우 명령 요청을 할 때, 클라이언트한테 요청을 받을 때 까지 일하지 않음 (데몬)
명령을 점유하기 때문에 다른 명령어를 사용할 수 없음. 그렇기 때문에 백그라운드를 사용함.
백그라운드 사용법 : 명령줄 맨 뒤에 '&' 입력
즉 백그라운드는 서버에서 수동으로 명령을 내릴 때 사용
* 포그라운드에서 백그라운드로 작업 전환!!!
서버에서 실수로 명령어를 내릴 때, sleep 100000 명령어에 '&'을 못붙임
이럴 경우, Ctrl + z 를 누르면 멈춤 (stopped)
그 후 bg %1 명령을 이용 하면 백그라운드 명령으로 전환됨
* 반대로도 할 수 있음
jobs 로 확인한 후 fg %1 백그라운드를 포그라운드로 전환!
* jobs 내용 분석
빈칸 : - 전에 이용했다는 의미 (이미 cpu는 사용했음)
- : + 전에 이용했다는 의미 (이미 cpu는 사용했음)
+ : 최근 사용 (이미 cpu는 사용했음)
top 명령어
- 시스템 관리로 많이 쓰는 명령어
- ps 명령어랑 비슷한 기능 (ps 대신 사용 가능)
- 전체 프로세스를 다 볼 수 있음 --> 실시간 모니터링 가능
- 단, 터미널 폭에 들어 가는 만큼 보여줌
- ps 명령어는 상태가 만들어지고 죽는 상황을 알 수 없음
- 그러므로 top 명령어가 나오게 됨
# top
# top -u oracle /* 해당 사용자의 프로세스 정보를 실시간 모니터링 */
# top -p PID1,PID2,PID3 /* 해당 번호의 프로세스 정보를 실시간 모니터링 */
* top 분석
- 전체 CPU 사용량이 정확하게 나옴
- us : user 명령어를 입력하고 출력하기 까지의 권한 (로딩하고 출력하기까지 메모리 할당)
- sy : system time, kenel이 이용하는 시간
- idle time : 작업을 하지 않는 노는 시간
- mem : 메모리, used 사용량, free 사용하지 않은 양, buffer 뭐라고 했지?
- swap : 하드디스크에 공간이 많으니까, 남은 공간을 메모리로 쓰자. 라는 의미 (추가메모리)
하드디스크의 일정 공간을 메모리에 빌려주는 것.
메모리 남는 공간을 파일을 올리고 적제한다. 메모리 사용률이 거의 100% 차있는 경우가 많다.
free 는 사용하지 않는 다는 것이 아니라 프로그램이 올라가지 않은 공간이라고 본다.
- total tasks : 현재 돌아가는 프로세스 몇 개야?
프로세스 상태들 ( running, sleeping, stopped, zombie )
zombie - 사용자의 명령을 받을 수 없는 상태
- load average : 메모리에 로딩을 시킬 때, 어느정도 부하가 걸리고 있는가? (5분전까지의 상황, 10분전, 15분전)
- users : 현재 로그인이 된 사용자
# renice [-/+PRI] PID
# renice -5 PID : 기본 우선 순위를 5단계 상향
# renice +5 PID : 기본 우선 순위를 5단계 하향
# renice 0 PID : 기본 우선 순위 복귀
* 조정될 PRI는 -19 ~ +19까지 사용 가능. (총 20단계만 조정할 수 있음)
VIRT : virture
RES : resident 알이에스
SHR :
S : sleep 자고 있는 상태
%CPU : 전체에서 사용률
%MEMM : 전체에서 사용률
TIME+ : 최종 돌아간 시간 정보, 단위 시간 정보
스레드는 ps를 못잡음
Top 명령 보는 방법 TIP!
- 점유율 (점유율 높으면 우선순위가 높음)
- 점유율 --> PR --> NI
- 일반 프로그램인데, 점유율이 너무 높다면 PR을 보고 NI에서 조정되었는지 확인 해보기!
- 일반 소프트웨어에서 가장 먼저 시작하는 번호는 16번임
- PID 나 명령이나 명령이나 PID 나 같은 의미다.
pstree
- ps -ef 하려면 다 맞춰서 찾아야 하죠. 이럴 때, 도식화 해서 보겠다 한다면
- 누가 누굴 만들었구나 하는 것을 트리구조 형태로 볼 수 있음
ps -ef 단점
- 커널에 관한 프로세스는 관찰 할 수 없음 (kenel 프로세스 프로그램)
- 커널 자체에 영향이 가기 때문에 관찰 할 수 없음
'BOX' 카테고리의 다른 글
Linux - 23. System Log II (0) | 2016.12.07 |
---|---|
Linux - 22. System Log I (0) | 2016.12.07 |
Linux - 20. 패키지 관리 (0) | 2016.12.07 |
Linux - 19. 서비스 관리 (0) | 2016.12.07 |
Linux - 18. Bootstrap(부팅의 단계) (0) | 2016.12.07 |
블로그의 정보
jennysgap
jennysgap