Process
7.1 Process
프로그램은 프로세스가 될 가능성을 간직한 채 디스크에 잠들어 있는 정보를 의미하며 프로세스는 프로그램이 메모리상에서 활동하고 있는 상태
7.1.1 생성
하나의 프로세스가 다른 프로세스를 생성할 경우 원래의 프로세스가 더 이상 남아 있을 필요가 없다면 exec() 호출을 통하여 자신을 다른 프로그램을 실행하는 새로운 프로세스로 대치할 수가 있다.
원래의 프로세스가 계속 존재하려면 fork() 호출을 통하여 자신의 복사본 프로세스를 먼저 만들고 복사본 프로세스에서는 다시 exec() 호출을 통하여 자신을 다른 프로그램을 실행하는 새로운 프로세스로 대치한다.
[root @edu00 linux]#pstree
init 프로세스가 커널 이후에 실행되는 최초의 프로세스가 되고 그 밑으로 자식 프로세스들이 생성되게 된다. 하나의 프로그램이 다른 프로그램을 시작할 때 그 새로운 프로세스를 서브 프로세스 혹은 자식 프로세스라고 한다.
shell이 또 다른 shell을 시작할 때 그 새로운 shell을 서브 shell이라 한다.
자식 프로세스는 부모 프로세스의 환경을 물려받는다. 그리고 자식 프로세스가 자신의 환경을 변경할 때 그것은 부모 프로세스에게 전달되지 않는다.
다음은 프로세스의 생성 과정이다.
[root @edu00 linux]#bash
[root @edu00 linux]#ps
[root @edu00 linux]#bash
[root @edu00 linux]#ps
[root @edu00 linux]#exec ps
7.1.2 상태보기
user(BSD) 프로세스 소유자의 username
uid(sys V) 프로세스 소유자의 username
pid 프로세스 식별 번호
%cpu cpu 사용 비율의 추정치
%mem 메모리 사용 비율의 추정치
SZ K 단위 혹은 페이지 단위의 가상 메모리 사용량
RSS 실제 메모리 사용량
TTY 프로세스와 연결된 터미널 포트
STAT 프로세스의 현재 상태
R 실행 중 혹은 실행될 수 있는 상태
S sleep
I idle (비활동 상태:BSD, 중간적 상태:sys V)
T 정지된 상태(suspend)
Z 좀비(zombie) 프로세스
D 디스크 관련 대기 상태
P 페이지 관련 대기 상태
X 메모리 확보를 위해 대기중(sys V)
K 사용 가능한 커널 프로세스(aix)
W 스왑 out된 상태
N nice되어진 상태
> 우선 순위가 인위적으로 높아진 상태
TIME 총 CPU 사용 시간
COMMAND 프로세스의 실행 명령행
STIME(sys V) 프로세스가 시작된 시간 혹은 날짜
C(sys V), CP(BSD) 짧은 기간동안의 CPU 사용율
F 프로세스의 플래그들
PPID 부모 프로세스
PRI 실제 실행 우선 순위
NI nice
WCHAN 프로세스를 기다리는 이벤트
7.1.3 command
[root @edu00 linux]#ps aux
[root @edu00 linux]#ps -ef
[root @edu00 linux]#ps aux | grep httpd
7.1.4 top
프로세스를 모니터할 수 있는 유틸리티로 프로세스의 활동을 실시간으로 모니터링한다.
CPU와 메모리 등에 대한 시스템 정보를 보여준다.
7.1.4.1 top 실행시 각 항목의 의미 (라인별)
1) 현재 시간, 시스템 부팅 후 경과 시간, 로그인한 사용자의 수, 세 개의 부하 평균값
(1분, 5분, 15분 동안의 프로세스 수의 평균)
2) 실행되고 있는 프로세스의 통계 값
실행 중인 프로세스의 총 갯수, 프로세스 상태(sleeping, running, zombie, stopped)
3) CPU 상태
사용자, 시스템, nice, idle 프로세스가 사용한 CPU 시간의 비율을 %화
4) 메모리 상태
총 메모리, 사용 중인 메모리, 사용 가능한 메모리, 공유 메모리, 버퍼에 사용되고
있는 메모리의 양
5) 스왑 상태
사용 가능한 총 스왑, 사용 중인 스왑, 사용 가능한 스왑, 캐쉬에 사용되고 있는
스왑 공간
6) PID Process ID
PPID parent Process ID
UID
USER
PRI 현재 지정된 우선순위이며 자동으로 바뀐다.
NI nice 값은 특별히 지정하지 않으면 0이며, 범위는 -20 - 19, 값이 작을
수록 우선순위가 높다.
SIZE 프로세스의 코드와 데이타의 크기(KB)
TSIZE 프로세스의 코드 사이즈
DSIZE 프로세스의 데이타 사이즈
SWAP
RSS 프로세스가 사용하는 실제 메모리 양(여러 라이브러리 등에 사용하는
메모리 총량)
SHARE
STAT S : sleeping, D : uninterruptable sleeping, R : running, Z : zombie,
T : stop or trace
위 상태코드 뒤에 <, N, W
< : 음수의 nice 값
N : 양수의 nice 값
W : 현재 메모리에서 디스크로 스왑되어 있는 상태
LIB 라이브러리 페이지 크기
%CPU CPU 사용량의 비율
%MEM
TIME 프로세스가 시작하여 사용한 총 CPU 시간
COMMAND 프로세스를 실행한 명령어 라인
7.1.4.2 top 명령
SPACE 화면 갱신
h, ?
k kill
I zombie, idle 프로세스들의 출력을 on/off
n, # 출력할 프로세스의 수를 지정
q 종료
r nice 값 변경
s 화면을 갱신하는 시간을 변경
F, f 보여줄 항목을 추가하거나 삭제
O, o 보여줄 항목의 순서를 변경
l 첫 라인(uptime) on/off
m 메모리 관련 항목 on/off
t 프로세스와 CPU 항목을 on/off
c command line의 항목을 on/off
M 프로세스를 RSS 값으로 정렬
P %CPU 값으로 정렬(default)
T time 값으로 정렬
W 설정을 저장
7.2 signal 보내기(kill)
7.2.1 개념
프로세스간 통신 수단이 signal이라고 할 수 있다. 하나의 프로세스가 다른 프로세스에게로 메시지를 보내기 위한 수단이다. kill은 프로세스를 죽이라는 명령이 아니라 signal을 보내라는 명령이다.
7.2.2 종류
이름 번호 의미
HUP 1 Hangup (실행 종료, 로그 아웃하거나 모뎀 접속을 끊을 때 보내진다.)
INT 2 Interrupt (실행 종료, Ctrl+c를 누르면 보내진다.)
QUIT 3 Quit (실행 종료, Ctrl-\를 누르면 보내진다.)
KILL 9 Kill (무조건 종료)
SEGV 11 Segmentation Violation(허가되지 않은 메모리 영역에 접근 하였다.)
TERM 15 Terminate (가능한 정상 종료)
CONT 18 Continue (Stop이나 TSTP에 의해 정지된 프로세스가 다시 실행을 계속한다.)
STOP 19 무조건적으로 그리고 즉각적으로 정지
TSTP 20 Stop (실행을 정지시킨 후 다시 실행을 계속하기 위하여 대기, Ctrl+z)
7.2.3 사용법
[root @edu00 linux]#kill <pid>
[root @edu00 linux]#kill -<signal> <pid>
[root @edu00 linux]#ls -lR / > tt 2 > /dev/null &
[root @edu00 linux]#ps
[root @edu00 linux]#kill -9 <pid>
[root @edu00 linux]#ps
7.3 Multitasking
동시에 하나 이상의 프로그램을 실행시킬 수 있는 multitasking은 linux의 장점중 하나이다.
7.3.1 foreground, background & suspend
linux에서는 프로그램을 foreground와 background로 구별한다.
이 기능으로 하나 이상의 작업을 console에서 사용할 수 있다.
foreground : 화면에 출력시키면서 실행되는 상태(입력 가능)
background : 화면에 보여주지 않으면서 실행되는 상태(입력 불가능)
suspend : 메모리에 올라가 있지만 정지되어진 상태
7.3.2 foreground로 실행
일반적인 작업은 모두 여기에 해당된다.
[root @edu00 linux]#ls -lR / > ls.txt 2> /dev/null
7.3.3 background로 실행
foreground로 실행하는 것과 비슷하지만 뒤에 &를 붙이면 화면 뒤에서 실행된다.
동시에 다른 작업을 할 수 있지만 background로 할 수 있는 작업은 제한되어 있다.
예를 들면 vi는 background로 실행한다면 suspend될 것이다.
[root @edu00 linux]#ls -lR / > ls.txt 2> /dev/null &
[root @edu00 linux]#ps
[root @edu00 linux]#jobs
7.3.4 foreground를 suspend로
foreground로 실행되는 프로그램을 suspend시킬 수 있다.
Ctrl+Z를 누르면 실행 중이던 프로그램이 suspend된다.
Ctrl+C와 비교하면 좋을 것이다.
[root @edu00 linux]#ls -lR / > tt 2> /dev/null
Ctrl+Z
[1]+ Stopped
[root @edu00 linux]#ps
[root @edu00 linux]#jobs
Suspend된 것을 다시 foreground로 하기 위해서는 "fg %<작업번호>를 사용한다.
위에서 [1]이 작업 번호이다.
[root @edu00 linux]#fg %1
Suspend된 것을 다시 background로 하기 위해서는 "bg %<작업번호>를 사용한다.
[root @edu00 linux]#bg %1
[root @edu00 linux]#jobs
7.3.5 daemon
process들 중에서 특별한 이름을 가지고 있는 것들이 있다.
그 중에서 daemon은 background로 실행되면서 server의 역할을 하거나 그 기능을 도와주는 process를 말한다.
[root @edu00 linux]#ps aux | grep httpd
httpd는 web service를 해주는 daemon이다.
7.3.5.1 standalone 방식
보통 부팅 시에 실행되는 process로 메모리에 계속 상주해 있으면서 client에게 service를 해준다.
서비스 요구가 빈번하거나 항상 요구되는 서비스일 경우 이런 방법으로 수행된다.
7.3.5.2 inet 방식
client로 부터 요청이 있을 때 process가 되어 서비스를 한다.
이 방법으로 쓰이는 것 중 대표적인 것이 in.telnetd이다.
이 daemon은 telnet을 서비스해주는 daemon이다.
그리고 이런 데몬들을 관리하는 데몬이 있는데 그것이 super daemon 또는 inet daemon이라고 한다. 이 데몬은 standalone 방식으로 실행되며 inet 방식의 데몬들에 대해 TCPWRAPPER를 작동시킬 수 있다.
tcp wrapper는 inet 방식의 데몬을 실행할 때 다른 처리 단계를 거칠 수 있게 한다.
즉, telnet 데몬을 특정 IP에게만 허락한다든지 하는 기능을 할 수 있다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 12452 |
JavaScript
마우스를 따라다니는 그림
|
| 40 | |
| 25015 | |
| 12447 | |
| 12446 |
JavaScript
SQLPLUS & PLSQL 기초
|
| 12445 |
JavaScript
PLSQL이란
|
| 29296 |
HTML
동적 INPUT 박스
|
| 12440 |
기타
메뉴
4
|
| 12438 |
Flash
창밖에 풍경
1
|
| 12437 |
JavaScript
우분투 root관리자 접속 방법 (펌)
|
| 29294 |
HTML
우키막기
1
|
| 35 | |
| 32 | |
| 12434 |
JavaScript
tar로 묶을때 특정 디렉토리나 파일 포함하지 않고 묶기
2
|
| 12433 |
Flash
도스상에서 플렉스 사용하기
|
| 12432 | |
| 29293 |
HTML
컨텐츠 팝업 출력 소스
|
| 29 | |
| 12431 | |
| 12428 | |
| 12421 |
jQuery
JQuery + wSlide 를 이용한 슬라이딩
6
|
| 29292 |
HTML
시계
|
| 12411 | |
| 12402 | |
| 27 | |
| 29290 |
HTML
금액입력시 한글로 변환하여 표시
1
|
| 12400 | |
| 24 | |
| 12397 |
PHP
이번 달 달력 출력
2
|
| 12396 |
JavaScript
동적 테이블 추가,삭제
|
| 21 | |
| 12391 | |
| 12390 | |
| 18 | |
| 16 | |
| 12377 |
Flash
쇼핑몰에서 많이 쓰는 자동 슬라이드
12
|
| 12373 | |
| 13 | |
| 9 | |
| 12372 | |
| 12371 | |
| 12363 | |
| 1 | |
| 13432 | |
| 12362 |
JavaScript
vista에서 한글 php 매뉴얼 chm파일이 안 보일떄
|
| 12360 | |
| 12355 | |
| 25014 | |
| 29287 | |
| 12352 | |
| 12349 | |
| 29279 |
HTML
기상청 날씨정보 XML
7
|
| 12344 |
기타
네이버로그인
4
|
| 12340 | |
| 12335 | |
| 12333 | |
| 12331 | |
| 29273 |
HTML
자신의 홈피에 날씨를 달아보자.
5
|
| 12330 | |
| 12329 | |
| 12328 | |
| 12324 |
JavaScript
홈피 사진 올리는법 사진줄이 는법
3
|
| 12323 |
MySQL
MySQL 자동으로 dump 받기
|
| 12318 |
MySQL
쿼리문 해석좀 부탁드립니다
4
|
| 12316 | |
| 12313 |
JavaScript
이미지에 박스 넣기
2
|
| 12310 |
Flash
[펌] RED5 파헤치기
2
|
| 12309 |
JavaScript
php 파일을 html 확장자로 사용하기
|
| 12307 |
JavaScript
아파치 보안 팁 [외부에서 아파치정보 못 보게하기]
1
|
| 12303 | |
| 12296 |
JavaScript
SSH 공격막아내기 방법 1
6
|
| 12291 | |
| 12280 |
Flash
플래시 배너 소스
10
|
| 12277 | |
| 12275 |
MySQL
[펌] 사용자 계정 트래픽 제한 하기
1
|
| 29272 |
HTML
JavaScript MD5 사용하기~
|
| 12274 |
기타
휠로 이미지 크기 제어
|
| 12260 | |
| 12252 | |
| 12250 | |
| 12248 | |
| 29267 | |
| 12245 | |
| 29266 | |
| 29261 |
HTML
그림안에 투명텍스트박스 넣기...
4
|
| 12239 |
Flash
플래시점선없애주는 자바스크립트
5
|
| 12238 |
Flash
[질문] 플래시 테두리 제거 질문이요..ㅠㅠ
|
| 29251 |
HTML
숫자 100이하 절사
9
|
| 12236 | |
| 12231 | |
| 12228 | |
| 12214 | |
| 12211 | |
| 12210 | |
| 29248 | |
| 29247 | |
| 25010 | |
| 12208 |
JavaScript
file_put_contents() 함수
1
|
| 12207 |
MySQL
bash shell의 환경설정 의미와 그 예
|
| 12202 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기