Chapter 3. 프로세스 관리
프로세스 : 실행중인 프로그램. PID를 통해 구분. background와 forground로 구분
fork : 새로운 프로세스를 위해 메모리를 할당받아 복사본 형태의 프로세스 실행
exec : 기존의 프로세스를 새로운 프로세스로 대체
init : PID 1번을 할당받는 최초의 프로세스. fork방식으로 필요한 프로세스들을 실행
SIGNAL : 프로세스 끼리의 통신을 위한 메시지
1. SIGHUP (터미널 접속 해제. 데몬 관련 환경설정후 적용을 위한 프로세스 재시작)
2. SIGINT (키보드 인터럽트. Ctrl+C)
3. SIGQUIT (키보드 인터럽트. Ctrl+\)
9. SIGKILL (강제종료)
15. SIGTERM (정상 종료. kill 명령의 기본 시그널)
18. SIGCONT (Continue. STOP나 STP에 의해 정지된 프로세스 재실행)
19. SIGSTOP (터미널에서 입력된 정지 시그널)
20. SIGSTP (실행 정지 후 다시 실행을 위해 대기. Ctrl+z)
※ 데몬 : 주기적이고 지속적인 서비스 요청을 처리하기 위한 백그라운드 프로세스
※ standalone : 메모리에 항상 상주하면서 서비스를 처리하는 데몬 방식
※ inetd : inetd 데몬에 의해 필요할 때 마다 실행되고 종료되는 데몬 방식
/etc/rc.d/init.d : 시스템에서 제공되는 서비스에 대한 시작 및 중지를 수행하는 스크립트가 포함된 디렉터리
ex) /etc/rc.d/init.d/httpd stop : 아파치 웹 데몬 중지 (service 명령어로도 가능)
/etc/rc.d/rc0.d ~ rc6.d
: 실행 레벨에 따라 필요한 서비스만 실행하기 위한 디렉터리
: init 프로세스가 실행레벨 5로 부팅하면 /etc/rc.d/rc5/d의 S로 시작하는 모든 링크들을 번호 순서대로 실행
: 각 서비스는 start인자를 이용해 실행됨. 마지막 스크립트 실행 후에는 다음 부팅절차 진행
[K | S] [번호] [inet.d_이름] : rc0.d ~ rc6.d 디렉터리 내의 파일형식
K : Kill. 실행하지 않을 서비스
S : Start. 해당 레벨에서 실행되더야 하는 서비스
번호 : 순차적인 정수 2자리 번호
init.d_이름 : 실행할 스크립트명
ps [option] : 현재 동작중인 프로세스의 상태 출력
a : 터미널과 연관된 프로세스 출력 (BSD계열)
u : 소유자를 기준으로 프로세스 출력
x : 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스 출력
l : 프로세스의 자세한 정보 출력. PRI 및 NI 값 출력
e : 해당 프로세스에 관련된 환경변수 정보도 함께 출력
f : 프로세스 간 상속관계를 트리구조로 출력
p : 특정 PID 지정 (BSD계열)
-A, -e : 모든 프로세스 출력 (=A SystemV계열)
-a : 세션리더 (일반적으로 로그인 셸)을 제외하고 터미널에 종속되지 않은 모든 프로세스 출력
-f : 유닉스 스타일로 출력. UID, PID, PPID 등 출력
-C 프로세스명 : 지정한 프로세스만 출력
-o 값 : 출력 포맷 지정. pid, tty, time 등..
-p : 특정 PID지정 (SystemV계열)
-u : 특정 사용자의 프로세스 정보 확인
ps 주요항목
USER / UID : 프로세스 소유자 이름 (BSD / System V)
PID : 프로세스 식별 번호
%CPU / %MEM : CPU / 램 사용비율 추정치 (BSD)
VSZ : 가상메모리 용량
RSS : 실제 메모리 사용량
TTY : 프로세스와 연결된 터미널
STAT : 프로세스의 현재 상태 (코드로 표시)
START / STIME : 프로세스 시작 시간 또는 날짜 (/System V)
TIME : 총 CPU 사용시간
COMMAND : 프로세스 실행 명령행
C / CP : 짧은 기간 동안의 CPU 사용률 (System V / BSD)
F : 프로세스 플래그 (1: exec없이 fork된 경우, 4: 슈퍼 유저 권한 사용자)
PPID : 부모 프로세스의 PID
PRI : 실제 실행 우선순위
NI : nice 우선순위 번호
pstree [option] : 프로세스의 상태를 트리 구조로 출력. 좌측 부모 프로세스. 우측 자식 프로세스
-a : 각 프로세스 명령행 인자까지 출력
-h : 조상 프로세스까지 하이라이트로 강조하여 출력
-n : 프로세스 이름 대신 PID로 출력
-p : PID 함께 출력
top [option] : 동작중인 프로세스의 상태를 실시간으로 출력. CPU, 메모리, 부하 상태 등까지 확인 가능.
-d 갱신지점 : 갱신시간 설정 (초단위)
-p : 특정 PID를 가지는 프로세스 모니터링
-b : 배치모드 옵션. 다른 프로그램이나 파일에 데이터 전송
-n 값 : top 명령의 실행 횟수 지정
top 주요 항목
PID / USER / PR : 프로세스 아이디 / 소유자 / 우선순위
NI : Nice Value 우선순위
VIRT : 작업에 의해 사용된 가상메모리 총 사용량
RES : 프로세스가 사용하는 실제 메모리양
SHR : 프로세스가 사용하는 공유 메모리양
S : 현재 프로세스의 상태
%CPU : CPU사용량
%MEM : 메모리 사용량
TIME+ : 프로세스가 시작하여 사용한 총 CPU 시간 (0.001초 까지)
COMMAND : 프로세스를 실행한 명령어
kill [option] [signal] [PID or %Job_Number] : 프로세스에 시그널 전송.
-l : 시그널의 종류 출력
-s 시그널 : 시그널 이름 지정
ex) kill –9 756 757 758
ex) kill –HUP 10118
killall [option] 프로세스명 : 같은 데몬의 여러 프로세스를 한 번에 종료
-l : 시그널 종류 출력 (--list)
-w : 시그널을 받은 프로세스들이 종료될때까지 대기 (--wait)
-v : 시그널이 전송된 결과 출력 (--verbose)
-s 시그널 : 시그널 이름 지정 (--signal)
-u 사용자명 : 특정 사용자의 프로세스 지정 (--user)
jobs [option] : 백그라운드로 실행중인 프로세스 및 중지된 프로세스 목록 출력
-l : PID를 추가로 출력
fg [%Job_Number] / fg [Job_Number] : 백그라운드로 수행중인 작업을 포어그라운드로 전환
bg : 포어그라운드 프로세스를 백그라운드로 전환. Ctrl+Z 후 일시중지 시킨 다음 실행
nice [option] 프로세스명 : NI값이 증감된 프로세스 추가 실행
-n 값 / -값 / --adjustment=값 : 프로세스의 설정된 NI값 증감. 옵션 미설정시 10지정
ex) nice –10 bash / ex) nice —10 bash
renice [option] NI값 PID : 실행중인 프로세스의 우선순위 변경
-n : NI값 지정 (--priority)
-p : PID 지정 (--pid)
-u : 사용자 이름 지정 (--user)
-g : 프로세스의 그룹 ID 지정 (--pgrp)
-v : 버전 확인 (--version)
-h : 사용법 확인 ()
nohup 명령어 : 명령어를 백그라운드 프로세스로 실행하면서 사용자가 로그아웃하거나 터미널이 닫혀도 계속 수행
ex) nohup tar cvf source.tar /opt/src &
pgrep [option] [pattern] : 프로세스 이름을 기반으로 PID 출력
-u : 특정 사용자가 실행시킨 PID 출력
-U : UID 기준으로 PID 출력
-g : 특정 그룹이 실행시킨 PID 출력
-G : GID 기준으로 PID 출력
-t : 특정 터미널에 실행중인 PID 출력
-l : PID외 프로세스명 출력
pkill [option] [pattern] : 프로세스명을 통한 시그널 전송
-pgrep와 동일 (-l 제외)
PRI
: 커널이 사용하는 우선순위 항목. 0~139까지의 범위. 일반적으로 0~99까지는 시스템에 예약.
: 인위적인 조작이 불가하고 시스템 상황에 따라 적절히 부여
NI : 사용자가 조작하는 우선순위 값. -20~19까지의 범위. root만이 값 조절 가능
/proc : 시스템에 동작 중인 프로세스의 상태정보와 기타 시스템 및 하드웨어 정보 확인
: 새로운 프로세스 생성시 /PID로 명명된 서브 디렉터리가 생성되며 프로세스에 관한 정보 저장
/proc/PID 구성요소
ㆍcmdline : 명령행 옵션 정보
ㆍcwd : 작업 디렉터리
ㆍenviron : 프로세스 환경 정보
ㆍexe : 프로세스를 실행시킨 명령어
ㆍfd : 파일 지정자(file descriptor)에 대한 정보
ㆍmaps : 실행명령과 라이브러리 파일의 메모리 맵 정보
ㆍmounts : 시스템의 마운트 정보
ㆍroot : 프로세스의 루트 디렉터리
ㆍstat : 프로세스의 상태
ㆍstatm : 프로세스의 메모리 상태 정보. size~페이지수 등..
ㆍstatus : 프로세스의 상태. 사람이 보기 쉬운 형태
/proc 주요 정보 파일 및 디렉터리
ㆍacpi : 전원 관련 정보 디렉터리
ㆍbus : pci 등의 bus 정보 디렉터리
ㆍcmdline : 부팅시 실행되는 커널 관련 옵션 정보
ㆍcpuinfo : CPU에 대한 정보
ㆍdevices : 현재 커널에 설정된 디바이스 드라이버의 리스트 정보
ㆍdma : 시스템에서 사용중인 DMA 정보
ㆍfilesystems : 커널에 설정된 파일 시스템의 리스트 정보
ㆍinterrupts : 시스템에 사용중인 인터럽트(IRQ) 정보
ㆍiomem : 메모리에 번지별로 할당된 리스트 정보
ㆍioports : 시스템에서 사용 중인 I/O 주소
ㆍkcore : 시스템에 장착된 물리적 메모리 이미지. 프로그램의 비정상 종료너 디버깅시 유용
ㆍloadavg : 최근 1분, 5분, 15분 간의 평균 부하율 기록
※ meminfo ~ mdstat까지
crontab [option] / crontab [option] 파일명 : 주기적인 작업 등록
-l : crontab에 설정된 내용출력
-e : crontab의 내용 작성 및 수정
-r : crontab 설정 파일 삭제
-u : root 사용자가 특정 사용자의 crontab 파일 다룰 때
-i : crontab 설정 파일 삭제전 질의 수행
ex) 0 12 * * 1-5 /home/posein/work.sh
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 마스터 1급 2차 정리 6 - 장치 관리 (0) | 2021.11.02 |
---|---|
리눅스 마스터 1급 2차 정리 5 - 패키지 관리 (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 3 - 파일 관리 (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 2 - 사용자 관리 (0) | 2021.11.02 |
리눅스 마스터 1급 2차 정리 1 - 리눅스 기초 (0) | 2021.11.02 |