프로세스 : 실행중인 프로그램을 일컫는 말.
PID : 프로세스가 실행 될 때 할당받는 프로세스 식별 고유번호
PPID : 부모 프로세스 식별번호 (서브 프로세스를 실행시킨 프로세스)
데몬(Daemon) : 시스템 또는 특정 서비스를 위해 백그라운드에서 동작하는 프로세스.
ex) 웹데몬 = httpd / telnet데몬 = telnet / ftp데몬 = vsftpd ....
2. 프로세스 정보 (/proc/[PID])
/proc : 각 프로세스에 해당되는 PID 디렉토리들이 있다.
pCMD (ps, pmap.... ) 등 수많은 프로세스 관련 명령어들의 정보가 모두 /proc/[PID] 에 내용이 저장되어있음.
해당 폴더들은 프로세스가 실행될때만 존재하고 프로세스가 종료되면 함깨 사라짐.
3. 프로세스 관리
1) 프로세스 관리
(1) 프로세스 실행
fg (포어그라운드) : fork 방식, fg로 실행 시 기존 쉘을 멈추고 실행된 프로세스를 동작시킴 (기존 쉘 이용불가)
bg (백그라운드) : [prosess] & 으로 호출 기존 쉘과 별개로 프로세스를 동작시킴 (기존 쉘 이용가능)
* GUI 환경, 오랫동안 실행을 유지해야하는 프로세스 등에 활용됨.
(2) 프로세스 확인
ps : 실행중인 프로세스의 확인.
* 주요 옵션
ps -l : 프로세스의 정보를 자세히 출력
ps -e : 모든 프로세스 리스트 출력 ( TTY가 ? 경우 운영체제 실행 시 실행됨 ex 데몬 )
ps -f : 프로세스 시작시간, 매개변수등 모든 정보를 출력 (CMD의 options까지)
ps -a : 다른 사용자의 프로세스 상태도 표시된다.
ps -u : 지정된 사용자에 연관된 프로세스에 대한 정보를 출력한다
ps -x : 화면에 보이지 않는프로세스까지 모두 표시
* 주요 조합
ps -ef : 모든 프로세스 및 프로세스의 상세정보 확인시 사용되는 포멧
ps -aux : 모든 사용자의 모든 프로세스를 확인할때 사용되는 포멧
(3) 프로세스 종료
kill : 프로세스를 종료할때 사용하는 명령어
kill [SIG] [PID] 형식이며 기본 SIG는 -15 이며 정상종료를 뜻한다 ( kill [PID] = kill -15 [PID] )
-Signal : 운영체제에 기본 내제되어있는 프로세스에게 보내는 비동기적 메시지
* 주요 SIG(signal)
2번 (SIGINT) : 키보드 인터럽트, 프로그램 종료 또는 차단 = Ctrl + C
3번 (SIGOUT) : 키보드 종료 = Ctrl + W
9번 (SIGKILL) : 강제 종료 무시할 수 없다
15번 (SIGTERM) : 정상 종료 , 기본 시그널
20번 (SIGTSTP) : 키보드 중지 = Ctrl + Z
[참고] kill, killall, pkill
kill 의 경우 PID 로 적용하지만 killall, pkill 의 경우에는 해당 프로세스의 이름으로 명령을 내린다, PID는 다양한데 이름이 모두 동일한경우는 일일이 kill 보다는 killall, pkill 등을 활용하여 한번에 종료할 수 있다.
ex) killall httpd
2) job 관리 ( job, % )
job : 실행중인 프로세스를 job 라고 한다. 즉 프로세스 = job
(1) job 실행
fg (포어그라운드) : fork 방식, fg로 실행 시 기존 쉘을 멈추고 실행된 프로세스를 동작시킴 (기존 쉘 이용불가)
bg (백그라운드) : [prosess] & 으로 호출 기존 쉘과 별개로 프로세스를 동작시킴 (기존 쉘 이용가능)
(2) job 확인
jobs : 실행중인 job 들의 현황을 볼 수 있는 CMD, jobID 도 여기서 확인이 가능하다.
fg (fg %(jobID]) : 백그라운드에서 실행중인 프로세스를 포어그라운드로 가져올 수 있음.
bg (bg %[jobID]) : 포어그라운드에서 실행중인 프로세스를 백그라운드로 가져올 수 있음.
(3) job 종료
kill [SIG] %[jobID] : 위의 ps에서 활용된 kill과 동일하게 적용 가능하다.
[참조] 사용예시
1) 백업 스크립트 사용 예
# /root/bin/backup.sh -> <ctrl+z> -> bg %1 시 백업으로 보낼 수 있음.
2) 하나의 터미널을 사용하여 작업 하는 경우.
# 터미널이 GUI 기반이 아닌 TUI 기반으로 운영될 경우, 터미널이 1개이기 때문에 bg 와 fg를 활용해야한다.
4. 프로세스 모니터링
top : 실시간으로 프로세스 상태나 CPU, memory 등을 확인할수 있다. (windows의 작업관리자와 유사)
* 기본 top 수행 시간간격은 3~4초, CPU 사용량별로 정렬.
* top -u [USERNAME] : 해당 사용자의 프로세스 정보를 실시간 모니터링
* 정렬 방식 변경 방법 CPU기준 : C / MEM기준 : M
1) TOP 정보 해석
top - 11:19:19 up 1 day, 12 min, 2 users, load average: 0.11, 0.03, 0.01
Tasks: 288 total, 1 running, 287 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.2 hi, 0.1 si, 0.0 st
MiB Mem : 2808.6 total, 234.3 free, 1310.8 used, 1263.6 buff/cache
MiB Swap: 3100.0 total, 3081.5 free, 18.5 used. 1300.2 avail Mem
(1째 줄) top - 11:19:19 up 1 day, 12 min, 2 users, load average: 0.11, 0.03, 0.01
-> uptimeCMD와 동일정보. 현재 시간과 시스템 부팅 후 작동한시간, 현재 사용자 수를 보여주며 load average는 CPU 의 평균 값을 보여준다.
* 서버들은 대부분 300일에 한번씩 재부팅 해주려고 한다.
* load average: 0.11, 0.03, 0.01 = load average: 1분, 5분, 15분.
-> 계산방법 : load average / CPU 개수 (core/thread) ≥ 1 일경우 부하가 걸리는 상태이다.
(2째 줄) Tasks: 288 total, 1 running, 287 sleeping, 0 stopped, 0 zombie
시스템에 동작중인 프로세스의 상태를 보여준다 ex) 총갯수, 동작중, 대기, 멈춤, 좀비
* zombie : 에러 상태, 정상 종료 또는 정상 실행되지 않은 프로세스 CPU의 사용량에 영향을 미친다.
(3째 줄) %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.2 hi, 0.1 si, 0.0 st
-> CPU의 상태를 보여준다. %비율임.
* 99.3 id (idle tome) : 현재 CPU의 여유율 즉 99.3% 만큼 쉬고있는 상태.
* 0.2 us, 0.2 sy (user time) + (sys time) : 유저와 시스템의 영역에 따른 점유율 (합이 80% 이상이면 CPU 증설 필요)
* 0.0 wa (wait IO) : DISK 작업 존재 유무, MEMORY 부족하지 않은지 점검필요.
(4/5째 줄) MiB Mem : 2808.6 total, 234.3 free, 1310.8 used, 1263.6 buff/cache
MiB Swap: 3100.0 total, 3081.5 free, 18.5 used. 1300.2 avail Mem
-> 메모리의 상태를 보여준다, 총사용가능, 사용된, 사용할수있는, 공유, 버퍼로 사용된 메모리, 스왑 메모리 등의 정보를 볼 수 있다. 각각의 시스템 자원에 따른 프로세스 점유율을 확인할 수 있다.
* free CMD 입력 시 memory 의 점유율을 확인할 수 있다.
2) top 내에서 추가 커맨드.
f : 정렬 기준 필드를 변경한다. 진입된 화면 내에서 방향키를 통해 원하는값에서 's' 입력시 설정 가능하다.
k : top 화면 내에서 kill CMD를 사용한다. ( 기본적으로 점유율이 가장 높은 프로세스가 타겟이된다 )
h : 입력 할 수 있는 다양한 커맨드들을 확인 할 수 있다.
3) 서버 시스템(운영체제) 모니터링 Tool (CPU/MEM/DISK/NETWORK)
top/htop : CPU/MEM
iotop : DISK I/O
iftop : NETWORK I/O
atop : CPU/MEM/DISK/NET, Data Gathering (데이터 수집)
* htop, iftop, atop 의 경우 centOS 의 yum repository에 존재 하지 않는다.
* htop, iftop, atop 패키지는 EPEL repository통해 받아야한다
yum install -y epel-release utils(관리 명령어툴) 을 이행하면 EPEL repository 도 이용가능하다.
이후 yum install -y htop iotop iftop 등 이용가능하다.
5. 프로세스 기타 관리 명령
1) lsof : 프로세스에 의해 열려진 파일들의 대한 정보를 볼 수 있다 (장애처리시 주로 활용됨)
* lsof [FILENAME] : 현재 파일을 사용중인 사용자를 보여줌
* lsof -c [데몬NAME] : 현재 데몬이 열고있는 파일을 목록
* lsof -p [PID번호] : 현재 PID 가 열고있는 파일의 목록
[참고] netstat : 네트워크의 상태정보
lsof -i 를 활용하면 네트워크 소켓 즉 포트들도 볼수 있으나 주로 포트나 소켓 관련 정보는 netsatat 를 활용하여 볼수 있다.
* netstat -an(t/u)p : t = tcp의 관련 정보 / u = udp의 관련정보 / -p : 프로세스들의 정보
2) pmap (pmap [PID]) : 프로세스가 사용하고 있는 메모리의 주소를 확인할 수 있다.
3) pstree : 실행중인 프로세스의 상태를 트리리구조로 보여주는 명령어
pstree [PID] : 해당 PID 의 종속된 프로세스들을 확인
pstree [USERNAME] : 해당 user의 종속된 프로세스들을 확인
* 주로 활용되는 포멧 : pstree -alup [PID] : 입력된 커맨드 및 옵션, PID 번호, 상세정보까지 모두 적용됨.
4) nicd / renice : 프로세스의 우선권을 부여 할 수 있다.
* 우선순위 : 프로세스가 운영체제의 CPU를 선점할 수 있는 권한.
* 우선권의 범위 -20 ~ 19 nice 값이 적을수록 우선순위가 높아진다.
(1) nice : 프로세스를 실행할 때 우선순위를 설정할 수 있는 CMD
(2) renice : 실행중인 프로세스의 우선순위를 조정할 수 있는 CMD
nice -n (-20~19) [CMD] : [CMD] 의 nice 값을 지정하며 실행 또는 동작 (기본값 : 0)
renice -n (-20~20) [PID] : 프로세스의 nice 값을 조정
곧.. 기초가 끝난다아~~
'모의해킹 침해대응 과정 > Linux 기초' 카테고리의 다른 글
리눅스 기초때기 6일차 원격접속과 파일전송 (0) | 2021.04.06 |
---|---|
리눅스 기초때기 5일차 쉘의 특성 (0) | 2021.04.02 |
리눅스 기초때기 4일차 압축과 아카이빙 / gzip,bzip2,tar,zip (0) | 2021.04.02 |
리눅스 기초때기 4일차 검색기능 명령어. / GREP, FIND (0) | 2021.04.02 |
리눅스 기초때기 4일차 유용한 명령어들 / CMP&DIFF, SORT, FILE (0) | 2021.04.02 |