/proc 파일시스템

/proc 파일시스템은 실제로 존재하지 않는 일종의 환영이다. 이 파일시스템은 커널이 메모리 상에 만들어 놓은 것으로 디스크에는 존재하지 않는다. /proc은 시스템의 갖가지 정보를 제공해 주는데, 원래는 주로 프로세스에 대한 정보를 제공했기 때문에 proc(process)이란 이름을 갖게 되었다. 이 곳에 있는 중요한 파일과 디렉토리들을 아래에 설명하였다. /proc 파일시스템에 관한 더욱 자세한 정보는 /proc 매뉴얼 페이지를 찾아보기 바란다.

/proc/1

프로세스 번호 1번에 대한 정보가 있는 디렉토리이다. 각 프로세스는 자신만의 디렉토리를 /proc 아래에 갖고 있게 되는데, 자신의 프로세스 식별 번호(process identification number)가 그 디렉토리의 이름이 된다.

/proc/cpuinfo

프로세서의 정보가 들어있다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려준다.

/proc/devices

현재 커널에 설정되어 있는 장치의 목록을 볼 수 있다.

/proc/dma

현재 어느 DMA 채널이 사용 중인지를 알려준다.

/proc/filesystems

어떤 파일시스템이 커널에 설정되어 있는지를 알 수 있다.

/proc/interrupts

현재 어느 인터럽트가 사용 중인지, 그리고 얼마나 많이 사용되었는지를 알 수 있다.

/proc/ioports

현재 어느 I/O 포트가 사용 중인지를 알려준다.

/proc/kcore

이것은 시스템에 장착된 실제 메모리의 이미지이다(즉, 실제 메모리의 내용을 그대로 본뜬 것이다). 따라서 이 파일의 크기는 실제 메모리의 크기와 정확히 일치하는 것처럼 보인다. 그러나 이 파일은 프로그램이 필요로 하는 부분의 이미지만 그때 그때 만들어 내도록 되어 있어서, 실제로 메모리를 그만큼 차지하고 있는 것은 아니다. (/proc 파일시스템의 내용을 다른 곳에 복사하지만 않는다면, /proc 안의 내용은 아무런 디스크 공간을 차지하지 않는다는 점을 알아두자.)

/proc/kmsg

커널이 출력하는 메시지들이다. 이것은 syslog 파일에도 기록된다.

/proc/ksyms

커널이 사용하는 심볼들의 표를 보여준다.

/proc/loadavg

시스템의 평균부하량(load average)을 보여준다. 지금 시스템이 해야하는 일들이 얼마나 많은지 알려주는 세가지 지표를 볼 수 있을 것이다.

/proc/meminfo

메모리 사용량에 관한 정보를 보여준다. 실제 메모리와 가상 메모리를 모두 다룬다.

/proc/modules

현재 어떤 커널 모듈이 사용되고 있는지를 알려준다.

/proc/net

네트워크 프로토콜들의 상태에 대한 정보가 들어 있다.

/proc/self

이 곳은 이 디렉토리를 들여다보는 프로그램 자신의 프로세스 디렉토리로 링크가 되어 있다. 즉, 서로 다른 두 프로세스가 /proc를 본다면 그들은 서로 다른 링크를 보게 되는 것이다. 이렇게 하면 프로그램들이 자신의 프로세스 디렉토리가 어디인지를 쉽게 알 수가 있게 된다.

/proc/stat

이 곳에는 시스템의 상태에 관한 다양한 정보가 있다. 즉, 부팅된 후 page fault가 몇번 일어났는가 하는 것들을 알아 볼 수가 있다.

/proc/uptime

시스템이 얼마나 오랫동안 살아 있었는지 보여준다.

/proc/version

커널의 버전을 알려준다.

위에 나열한 파일들 대부분이 알아보기 쉬운 텍스트 파일로 되어 있긴 하지만, 어떤 경우에는 쉽게 알아보기 힘든 형식을 가지고 있기도 하다. 그래서 이런 파일들을 좀 더 쉽게 알아볼 수 있도록 해주는 많은 명령들이 준비되어 있다. 예를 들어 /proc/meminfo 파일은 메모리 사용량을 byte 단위로 나타내고 있는데, free 명령은 이것을 kilobyte 단위로 좀 더 알기 쉽게 나타내 준다(그리고 그 외에 몇가지 유용한 정보를 덧붙여 보여준다).