정리하는 공간
리눅스 ) 프로세스 관리-1 (ps -ef, ps-aux) 본문
1. 프로세스
프로세스란? 현재 시스템에서 실행 중인 프로그램
프로세스가 하는 일? 해당 프로그램에 관련된 파일을 찾아 메모리에 올려 놓고, 끄집어내고, 처리하고를 자동으로 한다.
2. 프로세스의 부모-자식 관계
1) 부모 프로세스는 자식 프로세스를 생성하고, 자식 프로세스는 또 다른 자식 프로세스를 생성한다.
2) 부팅시 스케줄러가 실행한 프로세스인 sysemd[1번] 과 kthreadd[2번] 프로세스를 제외하면 모든 프로세스는 부모 프로세스를 갖고 있다.
3) 자식 프로세스는 할 일이 끝나면 부모 프로세스에 결과를 돌려주고 종료한다.
4) 부모 프로세스는 자식이 누군지 테이블 정보를 갖고 있고, 자식 프로세스는 부모가 누군지 테이블 정보를 갖고 있다. 그래서 자식이 종료 시 부모에게 정보를 보내고, 부모는 자식의 PID값을 제거하는데 이때 프로세스가 완벽히 종료된다.
3. 프로세스의 번호
각 프로세스는 고유한 번호를 가지고 있는데 이것이 PID 이다.
4. 프로세스의 종류
1) 데몬 프로세스
-특정정 서비스를 제공하기 위해 존재하며 리눅스 커널에 의해 실행
-정상 프로세스이기 때문에 정상적으로 종료할 수 있고 강제종료도 가능하다.
2) 고아 프로세스
-자식 프로세스가 실행중인데 부모 프로세스가 먼저 종료될 때, 자식 프로세스는 고아프로세스라 부른다.
-1번 프로세스 (systemd) 가 고아 프로세스를 관리한다.
3) 좀비 프로세스
-자식 프로세스가 실행을 종료했는데도 부모 프로세스 목록에 계속 자식 프로세스 정보가 남아있는 경우.
-좀비 프로세스는 프로세스 목록에 defunct 프로세스라 나오기도 한다.
-좀비 프로세스가 증가하면 프로세스 테이블 용량이 부족해져 일반 프로세스 실행이 어려울 수도 있다.
5. 프로세스 목록 보기 ps
<유닉스 옵션> | |
ps | 현재 터미널에서 실행한 프로세스 목록 |
ps -f | 현재 터미널에서 실행한 프로세스 정보 |
ps -e | 전체 시스템에서 실행한 프로세스 목록 |
ps -ef | 전체 시스템에서 실행한 프로세스 정보 |
ps -ef | less 를 이용해 전체시스템에서 실행한 프로세스 정보를 봐보자.
1) ps -ef 출력 정보
UID | 프로세스를 실행한 사용자ID | STIME | 프로세스의 시작 날짜나 시간 |
PID | 프로세스 번호 | TTY | 터미널 종류와 번호 |
PPID | 부모 프로세스 번호 | TIME | 프로세스 실행 시간 |
C | CPU 사용량(%) | CMD | 실해되고 있는 프로그램 이름 |
출력 정보를 확인해 볼 수 있다. 또한 systemd, kthreadd 프로세스가 각각 1,2번인 걸 알 수 있다.
<BSD 옵션> | |
ps a | 현재 터미널에서 실행한 프로세스 목록 |
ps x | 전체 너미널에서 실행한 프로세스 목록 |
ps u | 현재 터미널에서 실행한 프로세스 정보 |
ps aux | less 를 이용해 전체 너미널에서 실행한 프로세스 정보를 봐보자.
2) ps aux 출력 정보
USER | 사용자 계정 이름 | VISZ | 사용하고 있는 가상 메모리크기(KB) |
%CPU | CPU 사용량 | RSS | 사용하고 있는 물리적 메모리크기(BK) |
%MEM | 물리적 메모리 사용량 | START | 프로세스 시작시간 |
3) ps aux 사용시 STAT에서 사용되는 문자의 의미
R | 실행중(Running) | STME | 프로세스 시작 날짜, 시간 |
S | 인터럽트 가능한 대기 상태 | s | 세션 리더 프로세스 |
T | 작업 제어에 의해 정지된 상태 | + | 포그라운드 프로세스 그룹 |
Z | 좀비 프로세스(defunct) | l(소문자 L) | 멀티 스레드 |
'리눅스 기초' 카테고리의 다른 글
리눅스 ) 파일 시스템 (0) | 2022.05.12 |
---|---|
리눅스) 프로세스 관리-2(pgrep, kill, top, jobs, 포그라운드, 백그라운드) (0) | 2022.05.12 |
리눅스) 파일의 접근 권한 (0) | 2022.05.12 |
리눅스) 쉘 의 환경 설정, 사용자 환경 설정 파일 (feat: alias, history) (0) | 2022.05.12 |
리눅스) 특수문자(*, ?, [], ~, -, ;, |, `, \, >, >>, <) (0) | 2022.05.12 |