프로세스
페이지 정보
본문
[프로세스 관리]
*프로세스의 생성은 부모 프로세스에서 자식 프로세스가 나오게 되는 계층적 트리 구조(쉽게 말해 피라미드 형태와 유사)를 갖는다 .
init<===커널이후의 최초의 프로세스 , 이밑으로 자식 프로세스가 생성됨
기본적으로 부모 프로세스가 종료되면 자식프로세스도 종료된다. 단, 부모프로세스가 종료되어도 자식 프로세스가 살아서 활동하는 경우가 있는데, 이러한 상태를 좀비상태라 한다. ===>프로세스상태(STAT) 부분참조.
*ps aux |more
ps -ef |more ==> 일반적으로 프로세스를 화면 단위로 끊어 출력하며, 프로세스의 정보도 출력한다.
ps -a : 모든프로세스를 출력
ps -f : 프로세스의 상속관계 출력(즉, 부모프로세스와 자식프로세스의 종속(연관성)을 표시한다.)
(예) #>ps -ef |grep httpd
해설; 프로세스 정보 중에서, httpd라는 문자열을 포함한 모든 프로세스를 화면에 출력함(즉, httpd라는 정보를 검색하는 의미).
===> 실행후... 나오는 데이터 이해 , 옵션 이해
*pstree : 프로세스들 간의 연결구조를 트리 형식으로 출력한다.
*STAT ===> RSDTZ상태위주로 숙지.
R : 실행중 혹은 실행될 수 있는 상태 +(실행대기상태)
S : sleep +(슬립모드)
I : idle(비활동 상태 : BSD, 중간적 상태:sysV)
T : 정지된 상태(suspend) + 종료는 되지 않았으나 메모리상에 상주하며, 동작을 하지 않는 상태.
Z : 좀비프로세스 +(부모 프로세스가 종료되어도 자식 프로세스는 살아서 종료되지 않은 상태)
D : 디스크 관련 대기상태(BSD) ==> 입출력을 기다리는 인터럽트가 불가능한 상태.(즉, 종료 or 취소 등의 조작 불가능)
P : 페이지 관련 대기상태(BSD)
X : 메모리 확보를 위해 대기 중 (sysv)
K : 사용가능한 커널 프로세스(aix)
W : 스왑 out된 상태
> : 우선순위가 인위적으로 높아진 상태
* signal (signal은 명령어가 아님. kill명령을 사용하기 위한 프로세스간의 통신수단일 뿐이다.)
다음의 내용중 각각의 1 2 3 9 ...은, 각각 HUP, INT...이라는 signal이름의 고유한 번호이다.
HUP 1 hangup (실행종료, 로그아웃하거나 모뎀 접속을 끊을때 보내진다)
INT 2 interrupt(실행종료, Ctrl-c)
QUIT 3 Quit(Ctrl-\)
KILL 9 강제종료
SEGV 11 허가되지 않은 메모리 영역에 접근하였다.
TERM 15 가능한한 정상종료
STOP 19 무조건 즉각 정지
TSTP 20 다시실행을 위해 대기
CONT 18 정지된 프로세스를 다시 실행
* 강제 종료 KILL
#> kill -9 <pid> ===> 해당번호의 프로세스 강제 종료
killall <프로세스이름> ==> 해당 프로그램의 모든 프로세스를 종료시킴.
(예) #>killall httpd ==> apache웹서버의 데몬인 httpd프로세스를 모두 종료시킨다.
*포그라운드와 백그라운드
포그라운드 : 화면에 보여주면서 실행되는 상태(입력을 받아들임)
백그라운드 : 화면에 보여주지 않으면서 실행되는 상태(입력X)
suspend : 메모리에 올라가 있지만 정지되어진 상태
cf) ls -IR / > ls.txt 2> /dev/null <enter> <=======의미 물어보기
(설명) ls 명령어를 사용해서 /경로에서 시작되는 패턴을 무시한 결과값을 ls.txt 라는 파일에 저장(끼워넣기)하고, 장치(또는 파티션 중에서 null인값은 포함하지 않는다.
(즉, /(굳이 설명하자면 1단계)에서 하위 2단계(바로 다음단계인 / 다음의 최상위 디렉토리 및 파티션)인 값, 여기에서의 결과값은 /bin, /boot, /home ...의 디렉토리를 검색한 결과를 ls.txt라는 파일에 추가됨. 뒷 부분은 조건(단, 그중에서 null인 값. 즉, 비어있는 디렉토리는 추가하지 않는다.)을 나타낸다. ==> 에고 설명하기 힘드네요. 그냥 영어로 적는게 나았을듯.
***필수참고***: ls 명령어의 옵션 이해하기
a: .(dot)으로 시작되는 파일(히든파일)까지 모두 출력한다.
A: 검색할 경우, ./이나 ../을 검색후 출력결과에 포함하지 않는다.
i: 각각의 파일에 index number(목차번호)를 보여서 출력한다.
I: 적용된 패턴을 무시한 결과값을 보여준다.
r: sort(정렬)옵션을 부여했을 경우에만 역순(내림차순)으로 출력해준다.
S: sort(정렬하기)
R: 서브디렉토리까지 출력
1.fg %번호 : 백그라운드 작업이나 suspend된 작업을 포그라운드로 전환 (번호는 프로세스 번호. 즉, PID를 가리킴)
2.bg %번호 : 포그라운드 작업이나 suspend된 작업을 백그라운드로 전환
3.<ctrl>+<z> : 포그라운드 작업을 suspend 시킴
*Demon
-백그라운드로 실행되면서 서버의 역할을 하거나 그 기능을 도와주는 프로세서
1.standalone 방식 : 부팅시 실행되어 메모리에 계속 상주해있으면서 서비스가 요청되어질때마다 수행됨, 일반적인 데몬실행방법
2.INET 방식 : 서비스가 요청되었을때 프로세스가 되어 서비스해줌.
ex) in.telnetd 이 대표적인예
3.inet demon : 어떠한 서비스를 INET방식으로 할 것인지를 설정하고 tcpwrapper를 작동시킬수 있다. /etc/inetd.conf가 inetd의 설정파일이다.
*top : 시스템의 프로세스에 대한 정보를 실시간으로 보여주고 실행도중 프로세스제어가능
spacebar를 사용해 다른 정보도 검색할 수 있음.
*nice : 프로세스 우선순위 변경(프로세스 실행전 순위변경)
참고: renice(프로세스 실행후 우선순위변경) ===> -값일 경우, +값을 지닌 프로세스보다 우선순위를 지닌다.
*cron프로그램 (중요사항. 필수숙지)
정기적으로 명령이나 프로세스를 스케줄할때 사용.
/etc/crontab 파일에 명령을 실행하려는 시간과 날짜를 지정
시스템이 부팅될때 한번만 시작됨.
ex) 0 9 * * 1 echo Happy Birthday
분 시 일 월 주 명령 <=== 설명
==> "Happy Birthday"를 월요일 아침 9시에 출력시킨다.
//나스카님
*프로세스의 생성은 부모 프로세스에서 자식 프로세스가 나오게 되는 계층적 트리 구조(쉽게 말해 피라미드 형태와 유사)를 갖는다 .
init<===커널이후의 최초의 프로세스 , 이밑으로 자식 프로세스가 생성됨
기본적으로 부모 프로세스가 종료되면 자식프로세스도 종료된다. 단, 부모프로세스가 종료되어도 자식 프로세스가 살아서 활동하는 경우가 있는데, 이러한 상태를 좀비상태라 한다. ===>프로세스상태(STAT) 부분참조.
*ps aux |more
ps -ef |more ==> 일반적으로 프로세스를 화면 단위로 끊어 출력하며, 프로세스의 정보도 출력한다.
ps -a : 모든프로세스를 출력
ps -f : 프로세스의 상속관계 출력(즉, 부모프로세스와 자식프로세스의 종속(연관성)을 표시한다.)
(예) #>ps -ef |grep httpd
해설; 프로세스 정보 중에서, httpd라는 문자열을 포함한 모든 프로세스를 화면에 출력함(즉, httpd라는 정보를 검색하는 의미).
===> 실행후... 나오는 데이터 이해 , 옵션 이해
*pstree : 프로세스들 간의 연결구조를 트리 형식으로 출력한다.
*STAT ===> RSDTZ상태위주로 숙지.
R : 실행중 혹은 실행될 수 있는 상태 +(실행대기상태)
S : sleep +(슬립모드)
I : idle(비활동 상태 : BSD, 중간적 상태:sysV)
T : 정지된 상태(suspend) + 종료는 되지 않았으나 메모리상에 상주하며, 동작을 하지 않는 상태.
Z : 좀비프로세스 +(부모 프로세스가 종료되어도 자식 프로세스는 살아서 종료되지 않은 상태)
D : 디스크 관련 대기상태(BSD) ==> 입출력을 기다리는 인터럽트가 불가능한 상태.(즉, 종료 or 취소 등의 조작 불가능)
P : 페이지 관련 대기상태(BSD)
X : 메모리 확보를 위해 대기 중 (sysv)
K : 사용가능한 커널 프로세스(aix)
W : 스왑 out된 상태
> : 우선순위가 인위적으로 높아진 상태
* signal (signal은 명령어가 아님. kill명령을 사용하기 위한 프로세스간의 통신수단일 뿐이다.)
다음의 내용중 각각의 1 2 3 9 ...은, 각각 HUP, INT...이라는 signal이름의 고유한 번호이다.
HUP 1 hangup (실행종료, 로그아웃하거나 모뎀 접속을 끊을때 보내진다)
INT 2 interrupt(실행종료, Ctrl-c)
QUIT 3 Quit(Ctrl-\)
KILL 9 강제종료
SEGV 11 허가되지 않은 메모리 영역에 접근하였다.
TERM 15 가능한한 정상종료
STOP 19 무조건 즉각 정지
TSTP 20 다시실행을 위해 대기
CONT 18 정지된 프로세스를 다시 실행
* 강제 종료 KILL
#> kill -9 <pid> ===> 해당번호의 프로세스 강제 종료
killall <프로세스이름> ==> 해당 프로그램의 모든 프로세스를 종료시킴.
(예) #>killall httpd ==> apache웹서버의 데몬인 httpd프로세스를 모두 종료시킨다.
*포그라운드와 백그라운드
포그라운드 : 화면에 보여주면서 실행되는 상태(입력을 받아들임)
백그라운드 : 화면에 보여주지 않으면서 실행되는 상태(입력X)
suspend : 메모리에 올라가 있지만 정지되어진 상태
cf) ls -IR / > ls.txt 2> /dev/null <enter> <=======의미 물어보기
(설명) ls 명령어를 사용해서 /경로에서 시작되는 패턴을 무시한 결과값을 ls.txt 라는 파일에 저장(끼워넣기)하고, 장치(또는 파티션 중에서 null인값은 포함하지 않는다.
(즉, /(굳이 설명하자면 1단계)에서 하위 2단계(바로 다음단계인 / 다음의 최상위 디렉토리 및 파티션)인 값, 여기에서의 결과값은 /bin, /boot, /home ...의 디렉토리를 검색한 결과를 ls.txt라는 파일에 추가됨. 뒷 부분은 조건(단, 그중에서 null인 값. 즉, 비어있는 디렉토리는 추가하지 않는다.)을 나타낸다. ==> 에고 설명하기 힘드네요. 그냥 영어로 적는게 나았을듯.
***필수참고***: ls 명령어의 옵션 이해하기
a: .(dot)으로 시작되는 파일(히든파일)까지 모두 출력한다.
A: 검색할 경우, ./이나 ../을 검색후 출력결과에 포함하지 않는다.
i: 각각의 파일에 index number(목차번호)를 보여서 출력한다.
I: 적용된 패턴을 무시한 결과값을 보여준다.
r: sort(정렬)옵션을 부여했을 경우에만 역순(내림차순)으로 출력해준다.
S: sort(정렬하기)
R: 서브디렉토리까지 출력
1.fg %번호 : 백그라운드 작업이나 suspend된 작업을 포그라운드로 전환 (번호는 프로세스 번호. 즉, PID를 가리킴)
2.bg %번호 : 포그라운드 작업이나 suspend된 작업을 백그라운드로 전환
3.<ctrl>+<z> : 포그라운드 작업을 suspend 시킴
*Demon
-백그라운드로 실행되면서 서버의 역할을 하거나 그 기능을 도와주는 프로세서
1.standalone 방식 : 부팅시 실행되어 메모리에 계속 상주해있으면서 서비스가 요청되어질때마다 수행됨, 일반적인 데몬실행방법
2.INET 방식 : 서비스가 요청되었을때 프로세스가 되어 서비스해줌.
ex) in.telnetd 이 대표적인예
3.inet demon : 어떠한 서비스를 INET방식으로 할 것인지를 설정하고 tcpwrapper를 작동시킬수 있다. /etc/inetd.conf가 inetd의 설정파일이다.
*top : 시스템의 프로세스에 대한 정보를 실시간으로 보여주고 실행도중 프로세스제어가능
spacebar를 사용해 다른 정보도 검색할 수 있음.
*nice : 프로세스 우선순위 변경(프로세스 실행전 순위변경)
참고: renice(프로세스 실행후 우선순위변경) ===> -값일 경우, +값을 지닌 프로세스보다 우선순위를 지닌다.
*cron프로그램 (중요사항. 필수숙지)
정기적으로 명령이나 프로세스를 스케줄할때 사용.
/etc/crontab 파일에 명령을 실행하려는 시간과 날짜를 지정
시스템이 부팅될때 한번만 시작됨.
ex) 0 9 * * 1 echo Happy Birthday
분 시 일 월 주 명령 <=== 설명
==> "Happy Birthday"를 월요일 아침 9시에 출력시킨다.
//나스카님
댓글목록
등록된 댓글이 없습니다.