Por que o tamanho de / proc / stat é mostrado como zero? [duplicado]

1
ls -rlth /proc/stat
-r--r--r-- 1 root root 0 Feb 21 04:25 /proc/stat

Embora, se cat , tenha conteúdo suficiente. Qualquer ajuda sobre este FS virtual será útil.

    
por Keyshov Borate 23.02.2016 / 15:44

3 respostas

3

proc é um nome de arquivo de mapeamento do sistema de arquivos virtual para estruturas / variáveis internas do linux; então é normal / proc / stat ter 0 bytes.

Da wikipedia: procfs

The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information about processes and other system information in a hierarchical file-like structure, providing a more convenient and standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as an interface to internal data structures in the kernel. It can be used to obtain information about the system and to change certain kernel parameters at runtime (sysctl).

De TLDP Hierarquia do sistema de arquivos do Linux: / proc

The most distinctive thing about files in this directory is the fact that all of them have a file size of 0, with the exception of kcore, mtrr and self.

Nota: Na verdade, apenas mtrr e self são 0 em meus servidores - kcore é a memória que você pode endereçar, ou seja, os endereços de memória virtual do kernel, portanto, o 128TB. Também relevante para esta discussão, /proc/kcore não está sendo implementado nas arquiteturas MIPS e ARM.

    
por 23.02.2016 / 15:49
4

Isso porque é um arquivo virtual que não tem tamanho conhecido predefinido, o tamanho real, ou seja, a quantidade de dados retornados varia dependendo de quando você os lê.

Alguns arquivos /proc podem ter um tamanho não nulo porque são conhecidos antecipadamente.

   /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.

No entanto, considerando o fato de eu não ter 128 TB de RAM em minha máquina, o valor relatado e o tamanho que pode ser lido não correspondem à documentação:

$ ls -lh /proc/kcore
-r--------. 1 root root 128T Feb 23 16:10 /proc/kcore
    
por 23.02.2016 / 15:51
3

/proc é um sistema de arquivos especial. Não é algo em que você armazena arquivos. É um sistema de arquivos virtual, sei que não é a analogia correta, mas considero algo como um driver de dispositivo no diretório /dev . O que você escreve nos arquivos em /dev é passado para o sistema de alguma forma. Da mesma forma, quando você lê um arquivo, ele extrai esses valores do sistema. Portanto, como não há informações armazenadas nesses arquivos, o tamanho é mostrado como zero.

    
por 23.02.2016 / 15:52