[Linux] Linux/proc
/proc 디렉토리는 가상 파일 시스템으로 /dev와 마찬가지로 하드 디스크 상에서 물리적인 용량을 갖지 않는다. 이 디렉토리에는 현재 시스템의 하드웨어 정보와 현재 실행되고 있는 프로세스의 정보가 디렉토리 혹은 파일 형태로 저장된다.
1) 숫자 폴더
숫자로 생서되는 폴더들은 현재 실행되고 있는 프로세스 ID(PID)를 의미하며 각 디렉토리에는 프로세스에서 사용하는 정보들이 파일 및 디렉토리 형태로 저장된다.
2) proc/buddyinfo
리눅스 Buddy System의 버디 할당자에 관한 정보를 저장한다.
Buddy System이란 외부 단편화를 최대한 줄이고 연속된 공간을 만들기 위해 인접된 Page를 묶어서 큰 공간을 만들거나 분할해서 공간을 생성하여 물리 메모리를 효율적으로 할당하는 시스템이다.
3) proc/cmdline
부트로더에서 커널에 전달된 이자 값을 저장한다.
4) proc/cpuinfo
이름그대로 CPU 정보를 저장한다. 이 때 저장되는 정보로는 프로세서 정보, CPU 타입, 모델, 제조사 등이 있다.
5) proc/crypto
사용 가능한 암호화 모듈들에 관한 목록을 저장한다.
6) proc/devices
장치 ID에 의해 정렬된 캐릭터와 블록 장치들 뿐만 아니라 /dev 이름에 대한 목록을 저장한다. 즉, 현재 시스템에서 할당한 디바이스들의 목록이라고 볼 수 있다.
7) proc/diskstats
논리 디스크 장치들의 상태와 파티션 정보 등을 저장한다.
8) proc/driver
현재 시스템의 드라이버 관련 정보를 저장한다.
9) proc/filesystem
현재 시스템이 지원하는 파일 시스템에 관한 정보를 저장한다.
10) proc/interrupts
인터럽트 정보를 저장한다.
11) proc/iomem
I/O 장치들이 사용하고 있는 메모리 번지를 저장한다.
12) proc/ioports
사용하고 있는 입출력 포트에 대한 정보를 저장한다.
13) proc/loadavg
시스템의 평균 부하량(Load Average)에 대한 정보를 저장한다.
14) proc/meminfo
시스템 메모리 정보를 저장한다. 이 때, 저장되는 정보에는 메모리 크기, 사용량, 가상 메모리, 동적으로 할당된 메모리의 크기 등이 있다.
15) proc/modules
현재 로딩 된 모듈 정보를 저장한다. lsmod 명령어를 사용했을 때 나오는 내용과 일치한다.
16) proc/mounts
마운트 된 파일시스템의 목록을 저장한다.
17) proc/mtrr
MTRR(Memory Type Range Register, 프로세서 소프트웨어 보조 기능 제어 레지스터, CPU에 의해 메모리 범위에 대한 엑세스가 캐시되는 방식을 시스템 소프트웨어에 제공)의 정보를 저장한다.
18) proc/net
네트워크 프로토콜에 대한 정보를 저장한다.
- arp: arp 테이블
- dev: 네트워크 디바이스 상태
- netstat: 네트워크 통계
- raw: raw 디바이스 통계
- route: 라우팅 테이블 정보
- rt_cache: 라우팅 캐시
- socket: 소켓 통계
- tcp: tcp 소켓
- udp: udp 소켓
등 다양한 정보를 이곳에서 확인 가능하다.
19) proc/partitions
현재 시스템의 파티션 정보를 저장한다.
20) proc/self
현재 프로세스에 대한 심볼릭 링크를 저장한다.
21) proc/stat
CPU, 인터럽트, 컨텍스트 스위치 등 일반적인 시스템 통계 정보를 저장한다.
22) proc/swaps
swap 파일시스템 사용 정보를 저장한다.
23) proc/tty
현재 터미널들에 대한 정보를 저장한다.
24) proc/uptime
부팅 된 이후 시스템이 운영된 시간을 초단위로 저장한다.
25) proc/version
현재 사용 중인 커널의 버전 및 커널 컴파일에 사용된 컴파일러 정보 등을 저장한다.
이 외에도 다양한 파일 및 폴더가 존재하니 공부하고 싶은 사람들은 스스로 더 찾아보며 확인해 보는 것을 추천한다.