/proc/stat의 크기가 0으로 표시되는 이유는 무엇입니까? [복사]

/proc/stat의 크기가 0으로 표시되는 이유는 무엇입니까? [복사]
ls -rlth /proc/stat
-r--r--r-- 1 root root 0 Feb 21 04:25 /proc/stat

그렇게 해도 cat내용은 충분합니다.

답변1

미리 정의된 알려진 크기가 없는 가상 파일이기 때문이며, 실제 크기, 즉 반환되는 데이터의 양은 읽는 시점에 따라 달라집니다.

일부 /proc파일은 미리 알려져 있기 때문에 null이 아닌 크기를 가질 수 있습니다.

   /proc/kcore
          This  file  represents the physical memory of the system and is stored in the ELF core file for-
          mat.  With this pseudo-file, and an unstripped kernel (/usr/src/linux/vmlinux) binary,  GDB  can
          be used to examine the current state of any kernel data structures.

          The total length of the file is the size of physical memory (RAM) plus 4KB.

그러나 내 컴퓨터에 128TB의 RAM이 없기 때문에 보고된 값과 가능한 읽기 크기가 문서와 일치하지 않습니다.

$ ls -lh /proc/kcore
-r--------. 1 root root 128T Feb 23 16:10 /proc/kcore

답변2

proc은 파일 이름을 내부 Linux 구조/변수에 매핑하는 가상 파일 시스템이므로 /proc/stat의 바이트가 0인 것이 일반적입니다.

위키피디아에서:프로세스 파일 시스템

proc 파일 시스템(procfs)은 Unix 계열 운영 체제의 특수 파일 시스템으로 프로세스에 대한 정보와 기타 시스템 정보를 계층적 파일 형식 구조로 제공하고 커널에 저장된 프로세스 데이터에 동적으로 액세스하는 방법을 제공합니다. 기존의 추적 방법이나 커널 메모리에 대한 직접 액세스보다 좋습니다. 일반적으로 부팅 시 /proc라는 마운트 지점에 매핑됩니다. proc 파일 시스템은 커널의 내부 데이터 구조에 대한 인터페이스 역할을 합니다. 시스템에 대한 정보를 얻고 런타임에 특정 커널 매개변수(sysctl)를 변경하는 데 사용할 수 있습니다.

TLDP에서Linux 파일 시스템 계층: /proc

이 디렉터리에 있는 파일의 가장 눈에 띄는 특징은 kcore, mtrr, self를 제외한 모든 파일의 파일 크기가 0이라는 것입니다.

참고: 실제로 내 서버에서는 mtrr과 self만 크기가 0입니다. kcore는 주소를 지정할 수 있는 메모리, 즉 커널 가상 메모리 주소이므로 128TB입니다. 또한 이 논의와 관련된 것은 /proc/kcoreMIPS 및 ARM 아키텍처에서 구현되지 않은 문제입니다.

답변3

/proc특수 파일 시스템입니다. 파일을 저장하는 곳이 아닙니다. 이것은 가상 파일 시스템입니다. 이것이 올바른 비유가 아니라는 것을 알지만 디렉토리의 장치 드라이버로 생각하십시오 /dev. 파일에 쓴 내용은 /dev어떤 방식으로든 시스템에 전달됩니다. 마찬가지로 파일을 읽으면 시스템에서 이러한 값을 추출합니다. 따라서 이러한 파일에는 실제 정보가 저장되어 있지 않으므로 크기가 0으로 표시됩니다.

관련 정보