[Linux] 프로세스 상태 확인,실시간 모니터링 실습

mommers·2026년 1월 30일

Linux

목록 보기
14/59


프로세스 상태 확인 (ps, pstree)

  • 학습: PID, PPID 개념. 데몬(Daemon) 이해.
  • 실습:
    - ps aux로 전체 프로세스 확인.

    - ps -ef | grep python으로 특정 프로그램 실행 여부 확인.
    - pstree로 부모-자식 프로세스 관계 시각적으로 확인.

실시간 리소스 모니터링 (top, htop)

  • 학습: CPU, 메모리 점유율 분석. Load Average 의미.
  • 실습:
    • top 실행 후 메모리 순(M), CPU 순(P) 정렬 변경.

htop 설치 및 실행 (색상, 마우스 지원 확인)

htop 상단(Header)에 있는 정보와 메인 리스트에서의 구분법을 명쾌하게 정리함.

1. 상단 요약 정보 (Header) 의미

좌측 상단 Tasks: ... 줄에 나오는 숫자들의 뜻.

  • Tasks (프로세스):
    • 현재 시스템에 존재하는 프로세스(Process)의 총 개수.
    • 정확히는 '스레드 리더(Main Thread)'들의 합.
  • thr (User Threads):
    • *사용자 영역(User Space)**에서 생성된 스레드 개수.
    • 예: 크롬 탭 하나가 여러 개의 스레드를 씀. 부모 프로세스의 메모리를 공유하는 가벼운 일꾼들.
  • kthr (Kernel Threads):
    • *커널 영역(Kernel Space)**에서 생성된 스레드 개수.
    • 하드웨어 제어, 파일 시스템 관리 등 OS가 직접 굴리는 백그라운드 일꾼들.

2. 프로세스 리스트에서 3가지 구분하는 법

메인 화면(리스트)에서 눈으로 딱 보고 구별하는 포인트임.

A. 일반 프로세스 (Process / Tasks)

  • 모양: 일반적인 프로그램 이름 (예: python, bash, sshd).
  • 특징: PID를 가지고 독립적인 메모리 공간을 차지함.
  • 색상: (테마 기본값 기준) 흰색 혹은 회색 텍스트.

B. 사용자 스레드 (thr)

  • 모양: 프로세스 이름과 같거나 비슷함.
  • 구분법:
    1. 트리 뷰(F5): 부모 프로세스 아래에 가지(└─) 모양으로 매달려 있음.
    2. 색상: 설정(F2)에서 "Highlight program path"가 켜져 있다면, 스레드는 보통 초록색으로 표시됨.
    3. 토글 단축키: *Shift + H를 누르면 숨겼다 보였다 함. (이걸로 확인하는 게 제일 확실함).

C. 커널 스레드 (kthr)

  • 모양: 이름이 무조건 대괄호 [ ] 로 감싸져 있음.
    • 예: [kworker/u...], [ksoftirqd/0], [jbd2/sda1...]
  • 특징:
    • 사용자 메모리(RES)를 거의 먹지 않음.
    • 절대 죽이면 안 됨 (OS 멈춤).
  • 토글 단축키: *Shift + K를 누르면 숨겼다 보였다 함.
종류표시 예시단축키(숨김/표시)위치
Processpython3 app.py-User Space
Thread└─ python3 app.py (초록색)Shift + HUser Space
K-Thread[kworker/0:1] (대괄호)Shift + KKernel Space

htop 상단 바 설명

htop 상단 헤더는 프로세스의 신분증이자 건강검진표임.

1. 기본 신원 (Identity)

  • PID (Process ID): 프로세스 주민등록번호. kill 명령어로 죽일 때 이 번호가 필요함.
  • USER: 프로세스의 주인 (실행시킨 계정).

2. 우선순위 (Priority) - 중요

CPU가 누구를 먼저 처리할지 결정하는 계급장. 숫자가 낮을수록 높으신 분(우선순위 높음).

  • PRI (Priority): 커널(OS)이 보는 실제 우선순위.
  • NI (Nice): 사용자가 설정한 우선순위 조절 값.
    • 범위: 20(제일 급함/이기적) ~ 19(제일 착함/양보).
    • 관계: 보통 PRI = 20 + NI.

3. 메모리 3대장 (Memory) - 가장 헷갈림

  • VIRT (Virtual Image): "나 이만큼 필요할 수도 있어"라고 선언한 가상 크기.
    • 라이브러리, 코드, 스왑 포함. 실제 물리 메모리 사용량이 아님 (허수). 겁먹지 말 것.
  • RES (Resident size): "지금 당장 쓰고 있는 RAM" 크기.
    • 가장 중요. 실제 물리 메모리 점유율은 이걸 봐야 함 (진수).
  • SHR (Shared Mem): 다른 프로세스와 같이 쓰는 메모리.
    • 예: libc.so 같은 공유 라이브러리.

4. 상태 및 활동 (Status & Activity)

  • S (State): 현재 프로세스의 상태.
    • R (Running): 일하는 중.
    • S (Sleeping): 대기 중 (대부분의 상태).
    • D (Disk Sleep): 디스크 I/O 기다리는 중 (강제 종료 불가능, 위험 신호).
    • Z (Zombie): 죽었는데 부모가 시신 수습 안 해줌.
  • CPU% / MEM%: CPU와 메모리(RES 기준) 점유율.
  • TIME+: 프로세스가 시작된 후 CPU를 실제로 사용한 누적 시간. (켜놓은 시간이 아님).
  • Command: 실행된 명령어 경로.

요약

  • 메모리 누수 의심될 때: RES만 보면 됨.
  • 시스템 렉 걸릴 때: CPU% 높은 놈과 D 상태인 놈을 찾을 것.

  • 무거운 프로그램 실행 후 CPU/RAM 변화 관찰.
profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글