Qual é a função do procfs?

3

sysfs faz todo o sentido - representa o sistema e é montado em /dev . procfs , que é montado em /proc , é muito mais nebuloso. Quais são procfs & amp; /proc usado para?

    
por Billy ONeal 13.10.2010 / 17:58

4 respostas

7

/proc é uma API em tempo real para o kernel. Você pode definir variáveis do kernel ou recuperar informações do kernel. O procfs é analogicamente uma simulação do sistema de arquivos para poder se comunicar com o kernel através do sistema de arquivos.

Cada processo tem seu próprio diretório em /proc com o id do processo como o nome. Neste diretório você pode encontrar todo o tipo de informação que o kernel possui para o processo em particular.

Outros diretórios permitem obter as estatísticas do kernel (como /proc/meminfo ) ou informações (como /proc/cpuinfo ) ou você pode configurar certas coisas (como /proc/sys/vm/swappiness permite alterar como o kernel usará o espaço de troca).

    
por txwikinger 13.10.2010 / 18:12
9

Historicamente (anos antes do Linux), /proc veio primeiro e continha um arquivo por processo. Cada (pseudo) ficheiro forneceu acesso à memória do processo, e. G., A leitura do número de byte 0x1234 do ficheiro deu-lhe o conteúdo do endereço 0x1234 na memória virtual do processo. Essa interface foi usada por comandos como ps (o visualizador de informações do processo original) e depuradores.

Variantes subseqüentes do Unix copiaram o princípio, mas não os detalhes. Por exemplo, no Linux, há um diretório por processo, contendo várias informações em um formato legível. Por exemplo, /proc/1/cwd é um link simbólico para o diretório de trabalho atual do processo 1 e /proc/1/cmdline é um arquivo contendo os argumentos da linha de comando.

Como estava lá, o Linux também usou /proc para fornecer informações do sistema, como /proc/cpuinfo contendo informações sobre a CPU (microprocessador) e /proc/bus/usb/ contendo informações sobre dispositivos USB. A documentação de /proc está na documentação do kernel em filesystems/proc.txt .

Mais tarde, /sys (o sistema de arquivos sysfs ) veio fornecer informações sobre o kernel. Por exemplo, há informações sobre dispositivos USB em /sys/bus/usb (em um formato diferente de /proc/bus/usb ) e informações sobre módulos do kernel (bem como interfaces para controlar alguns módulos) em /sys/modules .

Observe que /proc/sys não é a mesma coisa que /sys . /proc/sys mostra um conjunto específico de parâmetros do kernel configuráveis em tempo de execução chamado parâmetros sysctl .

Você encontrará mais informações históricas e atuais sobre /proc na Wikipedia .

¹ ou mais precisamente, o sistema de arquivos proc , que pode ser montado em outros locais (mas não disponível em /proc , quebrará muitos programas).

    
por Gilles 13.10.2010 / 22:38
3

procfs apresenta informações sobre seus processos em execução.

Por exemplo:

$ sleep 120 &
[2] 11581
$ ls /proc/11581
...
cmdline
cwd
...
$ cat /proc/11581/cmdline
sleep120
    
por maxschlepzig 13.10.2010 / 18:11
0

Um pouco de variação em algumas respostas.

/proc é uma representação do sistema de arquivos dos processos atualmente em execução. Você não vai a lugar nenhum, se você pode ler arquivos, você pode interagir com o kernel. procfs é apenas a implementação disso.

A filosofia aqui é: Use as pequenas ferramentas como grep e friends para interagir com coisas como processos vs escrever ferramentas especializadas para interagir com processos.

    
por Dmitriy Likhten 13.10.2010 / 22:18

Tags