리눅스에서는 커널 정보를 파일처럼 읽을 수 있습니다. /proc/cpuinfo, /sys/class/net 같은 경로가 모두 가상 파일 시스템입니다. cat 명령 하나로 커널 내부 상태를 들여다볼 수 있습니다.


가상 파일 시스템이란

/proc/sys는 디스크에 실제 파일이 존재하지 않습니다. 커널이 실시간으로 생성하는 가상 파일 입니다.

PLAINTEXT
일반 파일:  cat /etc/hostname → 디스크에서 읽음
가상 파일:  cat /proc/cpuinfo → 커널이 실시간으로 생성하여 반환

procfs (/proc)

프로세스 정보와 커널 상태 를 제공합니다.

프로세스 정보 (/proc/[PID])

BASH
# 프로세스 목록 (각 PID가 디렉토리)
ls /proc/ | grep '^[0-9]'

# PID 1234의 정보
cat /proc/1234/status     # 프로세스 상태 (메모리, 스레드 수 등)
cat /proc/1234/cmdline    # 실행 명령
cat /proc/1234/maps       # 메모리 맵 (가상 주소 공간)
cat /proc/1234/fd/        # 열린 파일 디스크립터
cat /proc/1234/io         # I/O 통계
cat /proc/1234/limits     # 리소스 제한

시스템 정보

BASH
# CPU 정보
cat /proc/cpuinfo

# 메모리 정보
cat /proc/meminfo
# MemTotal, MemFree, MemAvailable, Buffers, Cached, SwapTotal 등

# 시스템 부하
cat /proc/loadavg         # 1분, 5분, 15분 평균 부하

# 파일 시스템 마운트
cat /proc/mounts

# 네트워크 통계
cat /proc/net/dev         # 네트워크 인터페이스별 트래픽
cat /proc/net/tcp         # TCP 연결 목록

# 커널 버전
cat /proc/version

# 시스템 가동 시간
cat /proc/uptime

커널 파라미터 (/proc/sys)

BASH
# 네트워크 관련
cat /proc/sys/net/ipv4/ip_forward          # IP 포워딩
cat /proc/sys/net/core/somaxconn           # TCP 백로그 큐 크기

# 메모리 관련
cat /proc/sys/vm/swappiness                # 스왑 사용 성향
cat /proc/sys/vm/overcommit_memory         # 메모리 오버커밋 정책

# 커널 파라미터 변경 (임시)
echo 1 > /proc/sys/net/ipv4/ip_forward

# 영구 변경
sysctl -w net.ipv4.ip_forward=1
# 또는 /etc/sysctl.conf에 추가

sysfs (/sys)

디바이스와 드라이버 정보를 계층적으로 제공합니다. procfs보다 구조화되어 있습니다.

PLAINTEXT
/sys/
├── block/        # 블록 디바이스 (sda, nvme0n1 등)
├── bus/          # 버스 유형 (pci, usb, i2c 등)
├── class/        # 디바이스 클래스
│   ├── net/      # 네트워크 인터페이스
│   ├── block/    # 블록 디바이스
│   └── thermal/  # 온도 센서
├── devices/      # 디바이스 트리
├── firmware/     # 펌웨어 인터페이스
├── fs/           # 파일 시스템 정보
├── kernel/       # 커널 오브젝트
└── module/       # 로드된 커널 모듈
BASH
# 네트워크 인터페이스 정보
cat /sys/class/net/eth0/address      # MAC 주소
cat /sys/class/net/eth0/speed        # 링크 속도 (Mbps)
cat /sys/class/net/eth0/mtu          # MTU

# 블록 디바이스 정보
cat /sys/block/sda/queue/scheduler   # 디스크 스케줄러
cat /sys/block/sda/size              # 디스크 크기 (섹터)

# CPU 주파수
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

# 온도 (밀리도)
cat /sys/class/thermal/thermal_zone0/temp

procfs vs sysfs

항목procfs (/proc)sysfs (/sys)
도입 시기Linux 초기Linux 2.6
주 용도프로세스 정보, 커널 상태디바이스/드라이버 정보
구조다소 혼잡체계적 계층 구조
파일당 값여러 값 포함 가능원칙: 파일당 하나의 값

활용

BASH
# 서버 트러블슈팅 시
cat /proc/loadavg                           # 부하 확인
cat /proc/meminfo | grep -E "MemAvailable|SwapUsed"  # 메모리 확인
cat /proc/net/sockstat                      # 소켓 상태 통계
cat /proc/sys/fs/file-nr                    # 열린 파일 수 / 최대값

핵심 포인트

  • /proc은 실제 파일이 아님: 커널이 동적으로 생성하는 가상 파일 시스템
  • top, ps 같은 도구의 원리: 내부적으로 /proc을 읽어서 정보를 표시
  • /proc/sys로 커널 파라미터 조정: sysctl은 /proc/sys의 래퍼

정리

/proc과 /sys는 리눅스 커널과 소통하는 인터페이스입니다. 시스템 모니터링 도구들이 내부적으로 이 파일들을 읽고, 커널 파라미터 튜닝도 여기서 합니다. "특정 프로세스의 메모리 사용량을 어떻게 확인하나요?"에 대해에 대한 답이 바로 /proc/[PID]/status입니다.

댓글 로딩 중...