Provided by:
manpages-pt_20040726-2_all 
NOME
proc - pseudo sistema de arquivos de informações de processos.
DESCRIÇÃO
/proc é um pseudo sistema de arquivos usado como uma interface para as
estruturas de dados do kernel, assim como para leitura e interpretação
de /dev/kmem. Muitos dos arquivos fornecem somente permissões de
leitura, mas alguns permitem que variáveis do kernel seja alteradas.
Apresentamos a seguir uma rápida descrição da hierarquia do /proc.
[número]
Há um subdiretório numérico para cada processo que esteja sendo
executado; o subdiretório tem o nome da identificação do
processo (PID). Cada um contém os seguintes pseudo arquivos e
diretórios:
cmdline
Contém a linha de comando completa para o processo, a
menos que todo o processo tenha sido transferido para a
área de troca (swap), ou seja um processo zumbi. Nestes
casos o arquivo estará vazio; isto é um arquivo que
retornará 0 caracteres. Este arquivo é terminado com o
caracter nulo, e não com nova linha.
cwd É o link do diretório atual de trabalho do processo. Para
encontrar o cwd do processo 20, por exemplo, deve-se:
cd /proc/20/cwd; /bin/pwd
Note que o comando pwd está freqüentemente incorporado no
interpretador de comandos e pode não funcionar exatamente desta
forma neste contexto.
environ
Este arquivo contém o ambiente do processo. As entradas
são separadas por caracteres nulos, e deve haver um
caracter nulo ao final do arquivo. Para listar o
ambiente do processo 1, deve-se:
(cat /proc/1/environ; echo) | tr "\000" "\n"
(caso alguém queira saber porque fazer isso, veja o comando
lilo(8).)
exe um ponteiro para o binário que está sendo executado e
aparece como uma ligação simbólica. readlink(2) no
arquivo especial exe retorna sob o Linux 2.0 ou mais
recente a seguinte cadeia de caracteres no formato:
[dispositivo]:inode
Por exemplo, [0301]:1502 pode ser o inode 1502 no
dispositivo com identificação primária 03 (major) (IDE,
MFM, etc...) e secundária 01 (minor) (primeira partição
do primeiro dispositivo). Sob o Linux 2.2 a ligação
simbólica contém a caminho de busca atual do comando.
Ainda, a ligação simbólica pode ser referenciada
normalmente, ou seja ao tentar-se abrir "exe" , na
verdade será aberto o executável. Pode ainda executar o
comando /proc/[número]/exe para executar uma cópia do
mesmo processo como [número].
find(1) com a opção -inum pode ser usado para localizar
um arquivo.
fd Este é um subdiretório contendo uma entrada para cada
arquivo aberto pelo processo, nomeado pelos seus
descritores e que tenham uma ligação simbólica com o
arquivo real (como nas entradas em exe). Zero é a entrada
padrão, 1 a saÃda padrão e 2 a saÃda padrão de erros,
etc...
Programas que utilizarão nomes de arquivos, mas não a
partir da entrada padrão, e que gravam arquivos, mas não
através da saÃda padrão, podem ser depurados através do
seguinte comando (assumindo-se -i como o indicador do
arquivo de entrada e -o como o indicador do arquivo de
saÃda:
foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
tendo-se então um filtro de trabalho. Note que isso não
irá funcionar para programas que fazem buscas em seus
arquivos, pois os arquivos no diretório fd não podem ser
pesquisados.
/proc/self/fd/N é aproximadamente o mesmo que /dev/fd/N
em alguns sistemas UNIX e similares a UNIX. Diversos
scripts MAKEDEV do Linux ligam simbolicamente /dev/fd
para /proc/self/fd, na verdade.
maps Um arquivo contendo o mapa atual de regiões da memória e
suas permissões de acesso.
O formato é:
endereço perms desl. disp inode
00000000-0002f000 r-x-- 00000400 03:03 1401
0002f000-00032000 rwx-p 0002f400 03:03 1401
00032000-0005b000 rwx-p 00000000 00:00 0
60000000-60098000 rwx-p 00000400 03:03 215
60098000-600c7000 rwx-p 00000000 00:00 0
bfffa000-c0000000 rwx-p 00000000 00:00 0
onde endereço é o endereço do espaço de memória que o processo
ocupa, e perms é o conjunto de permissões:
r = leitura
w = gravação
x = execução
s = compartilhada
p = privada (copia da gravação)
deslocamento é o deslocamento no arquivo, disp é o dispositivo
(primária:secundária)(major:minor), e inode refere-se ao inode
do dispositivo. Zero indica que o inode está associado à uma
região da memória, como o caso estaria com bss.
Nos kerneis 2.2 há um campo adicional fornecendo um caminho de
busca quando aplicável.
mem Este não é igual ao dispositivo mem (1,1), apesar de ter
o mesmo número de dispositivos. O dispositivo /dev/mem é
a memória fÃsica antes da conversão de endereços, mas o
arquivo mem aqui descrito é a memória acessada pelo
processo. Ela não pode ser mapeada por mmap(2)’ed
atualmente, e não poderá até que uma mmap(2) geral seja
adicionada ao kernel (o que pode ocorrer em breve).
mmap Diretório dos mapas gerados por mmap(2) os quais são
ligações simbólicas como exe, fd/*, etc. Note que estes
mapas incluem um subconjunto destas informações, então
/proc/*/mmap podem ser considerados obsoletos.
"0" é normalmente libc.so.4.
/proc/*/mmap foi removido do kernel do Linux na versão
1.1.40 (e realmente estava obsoleto)
root Unix e Linux suportam a idéia de um raiz de sistema de
arquivos por processo, definidos pela chamada ao sistema
chroot(2) . Root aponta o raiz do sistema de arquivos, e
comporta-se como exe, fd/*, etc...
stat Informações sobre o status do processo. Isso é fornecido
por ps(1).
Os campos, em ordem, com as suas propriedades especÃficas
em scanf(3) são:
pid %d Identificação do processo.
comm %s
O nome do arquivo do executável entre parênteses.
É visÃvel mesmo que o processo esteja na área de
troca.
state %c
Um caracter da cadeia "RSDZT" onde R é em
execução, S é dormindo em uma espera por
interrupção, D aguardando em uma espera que não
pode ser interrompida ou em área de troca, Z é um
zumbi e T significa paralisado (em um sinal) ou
rastreado.
ppid %d
O PID do processo pai.
pgrp %d
O ID do grupo do processo.
session %d
O ID da sessão do processo.
tty %d O tty que o processo usa.
tpgid %d
A ID do grupo do processo que atualmente detém o
tty no qual o processo está conectado.
flags %u
Os indicadores do processo. Atualmente, cada
indicador tem o bit matemático configurado,
porque crt0.s verifica a emulação de co-
processador matemático, e isso não é incluÃdo na
saÃda. Isso é provavelmente um erro, e nem todos
os processos são compiladores C. O bit matemático
é um decimal 4 e o bit de rastreamento é um
decimal 10.
minflt %u
O número de pequenos erros do processo, aqueles
que não requerem a carga de páginas de memória a
partir do disco.
cminflt %u
O número de erros menores do processo e de seus
processos filhos.
majflt %u
O número de erros maiores do processo, aqueles
que requerem a carga de páginas de memória a
partir do disco.
cmajflt %u
O número de erros maiores do processo e de seus
processo filhos.
utime %d
O número de ciclos do processador que o processo
tem previsto em modo usuário.
stime %d
O número de ciclos do processador que o processo
tem previsto em modo kernel.
cutime %d
O número de ciclos do processador que o processo
e seus filhos têm previstos em modo usuário.
cstime %d
O número de ciclos do processador que o processo
e seus filhos têm previstos em modo kernel.
counter %d
O número máximo de ciclos do processador do
próximo perÃodo de processamento destinado ao
processo, ou o tempo restante no perÃodo atual,
caso o processo esteja ocupando o processador.
priority %d
O valor padrão acrescido de 15. O valor nunca é
negativo no kernel.
timeout %u
O tempo em ciclos do processador do próximo
perÃodo de espera.
itrealvalue %u
O tempo (em ciclos do processador) antes que o
próximo SIGALRM seja enviado para o processo
relativo a um intervalo de tempo.
starttime %d Tempo, em ciclos do processador, que o
processo iniciou após o
sistema ser iniciado.
vsize %u
Tamanho da memória virtual.
rss %u Tamanho do conjunto residente: número de páginas
que o processo tem na memória real, menos 3 para
uso administrativo. Estas são as páginas que
contêm texto, dados ou espaço da pilha, não
incluindo páginas que foram carregadas de acordo
com a demanda ou que foram para a área de troca.
rlim %u
Limite em bytes do rss do processo (normalmente
2,147,483,647).
startcode %u
O endereço acima do qual o texto do programa
deve ser executado.
endcode %u
O endereço abaixo do qual o texto do programa
deve ser executado.
startstack %u
O endereço de inÃcio da pilha.
kstkesp %u
O valor atual de esp (ponteiro da pilha com 32
bits), conforme encontrado na pilha de páginas do
kernel para o processo.
kstkeip %u
EIP atual (ponteiro da instrução com 32 bits).
signal %d
O mapa de bits dos sinais pendentes (normalmente
zero).
blocked %d
O mapa de bits dos sinais bloqueados (normalmente
0, 2 para ambientes de trabalho).
sigignore %d
O mapa de bits dos sinais ignorados.
sigcatch %d
O mapa de bits de sinais recebidos.
wchan %u
Este é o canal no qual o processo fica esperando.
Este é o endereço da chamada ao sistema, e pode
ser analisada em uma lista de nomes, caso se
necessite de um nome textual (caso se tenha um
/etc/psdatabase atualizado, então tente ps -l
para ver o campo WCHAN em ação).
cpuinfo
Esta é uma coleção de itens dependentes da CPU e da arquitetura
do sistema, sendo que cada uma destas tem uma lista diferente.
As únicas duas entradas comuns são cpu a qual é a CPU atual em
uso e BogoMIPS uma constante do sistema que é calculada durante
a inicialização do sistema.
devices
Lista dos números primários (majors) e grupos de dispositivos.
Isso pode ser usado pelos scripts MAKEDEV para checagem de
consistência com o kernel.
dma Lista dos canais DMA ISA (acesso direto à memória) registrados
em uso.
filesystems
lista dos sistemas de arquivos que foram compilados com o
kernel. Pode ser usado por mount(1) para pesquisar através de
diferentes sistemas de arquivos quando nenhum é especificado.
interrupts
É usado para gravar o número de interrupções por cada IRQ nas
arquiteturas i386. Muito simples de ler-se, feito em formato
ASCII.
ioports
Lista das portas de Entrada-SaÃda registradas que estão em uso.
kcore Este arquivo representa a memória fÃsica do sistema e está
armazenada no formato de arquivo core. Com este pseudo arquivo,
e o binário do kernel com as funções de mensagens incorporadas
(/usr/src/linux/tools/zSystem), pode-se usar o GDB para examinar
o estado atual de qualquer estrutura de dados do kernel.
O tamanho total do arquivo é o tamanho da memória fÃsica (RAM)
mais 4 Kb.
kmsg Este arquivo pode ser usado ao invés da chamada ao sistema
syslog(2) para registrar mensagens do kernel. Um processo deve
ter privilégios de superusuário para ler este arquivo e somente
um processo pode fazer isso. Esse arquivo não deve ser lido se
um processo syslog está sendo executado o qual usa a chamada ao
sistema syslog(2) para registrar as mensagens do kernel.
Informações deste arquivos são recuperadas com o programa
dmesg(8)
ksyms Contém as definições dos sÃmbolos exportados pelo kernel usados
pelas ferramentas de módulos(X) para dinamicamente ligar e
vincular módulos carregáveis.
loadavg
A média de carga do sistema fornecida pela média do número de
serviços na fila de execução há mais de 1, 5 e 15 minutos. É o
mesmo que a média dada pelo programa uptime(1) e outros.
locks Este arquivo exibe os arquivos travados.
malloc Este arquivo somente está presente se CONFIGDEBUGMALLOC for
definido durante a compilação.
meminfo
É usada pelo comando free(1) para informar a quantidade de
memória livre e utilizada (tanto a memória fÃsica como a de
troca) assim como a memória compartilhada e os buffers usados
pelo kernel.
Tem o mesmo formato que o comando free(1), exceto pelo fato de
estar em bytes ao invés de Kb.
modules
Uma lista dos módulos carregados pelo sistema.
net Vários pseudo arquivos, que fornecem o status de alguma parte da
camada de rede. Estes arquivos contêm estruturas em formato
ASCII e podem ser lidas por exemplo pelo cat. De qualquer forma,
as ferramentas do netstat(8) possibilitam um acesso muito mais
adequado a estes arquivos.
arp Ele contém uma imagem em formato ASCII da tabela ARP do
kernel usada na resolução de endereços. Irá apresentar
dinamicamente as entradas ARP pré-programadas e recebidas
dinamicamente. O formato é:
IP address HW type Flags HW address
10.11.100.129 0x1 0x6 00:20:8A:00:0C:5A
10.11.100.5 0x1 0x2 00:C0:EA:00:00:4E
44.131.10.6 0x3 0x2 GW4PTS
Onde ’IP address’ é o endereço Ipv4 da máquina, o ’HW type’ é o
tipo de hardware no endereço conforme a RFC 826. Os indicadores
são internos à estrutura ARP(conforme definido em
/usr/include/linux/if_arp.h) e o
dev Os pseudo arquivos dev contêm informações sobre a
situação dos dispositivos de rede. Ele dá o número de
pacotes recebidos e enviados, o número de erros e
colisões e outras estatÃsticas básicas. Eles são usados
pelo programa ifconfig(8) para apresentar relatórios do
status do dispositivo. O formato é:
Inter-| Receive | Transmit
face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo: 0 0 0 0 0 2353 0 0 0 0 0
eth0: 644324 1 0 0 1 563770 0 0 0 581 0
ipx Nenhuma informação.
ipx_route
Nenhuma informação.
rarp Este arquivo usa o mesmo formato do arquivo arp e contém
a base de dados de mapeamento reverso usado para prover
os serviços de pesquisa de endereços reversos do rarp(8)
. Caso RARP não esteja configurado no kernel este
arquivo não estará presente.
raw Mantém uma imagem RAW (crua) da tabela de conexões.
Muita desta informação não tem outra finalidade senão a
depuração. O valor ’sl’ é a área do kernel para a
conexão, e ’local address’ é o endereço local e o par de
números de protocolo. "St" é o status interno da conexão.
"tx_queue" e "rx_queue" são as filas de dados de entrada
e saÃda em termos de uso de memória do kernel. Os campos
"tr", "tm->when" e "rexmits" não são usados por RAW. O
campo uid contém a identificação do criador da conexão.
route Nenhuma informação, mas parece similar ao route(8)
snmp Este arquivo contém dados em formato ASCII necessários
para o gerenciamento de IP, ICMP, TCP e UDP por um agente
snmp. As of writing the TCP mib is incomplete. It is
hoped to have it completed by 1.2.0.
tcp Mantém uma imagem da tabela de conexões TCP. Muitas
informações são utilizadas exclusivamente para depuração.
O valor ’sl’ é a área do kernel para a conexão, e ’local
address’ é o endereço local e o par de números de
protocolo. O "endereço remoto" é o par endereço remoto e
o número da porta (se conectado). "St" é o status interno
da conexão. "tx_queue" e "rx_queue" são as filas de
entrada de dados e de saÃda em termos de uso de memória
do kernel. Os campos "tr", "tm->when" e "rexmits" hold
internal information of the kernel socket state and are
only useful debugging. O campo uid contém a identificação
do criador da conexão.
udp Mantém uma imagem da tabela de conexões UDP. Muitas
informações são utilizadas exclusivamente para depuração.
O valor ’sl’ é a área do kernel para a conexão, e ’local
address’ é o endereço local e o par de números de
protocolo. O "endereço remoto" é o par endereço remoto e
o número da porta (se conectado). "St" é o status interno
da conexão. "tx_queue" e "rx_queue" são as filas de dados
de entrada e saÃda em termos de uso de memória do
kernel. Os campos "tr", "tm->when" e "rexmits" não são
usados pelo UDP. O campo uid contém a identificação do
criador da conexão. O formato é:
1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
unix Lista de conexões com domÃnios Unix presentes no sistema
e seus status. O formato é:
Num RefCount Protocol Flags Type St Path
0: 00000002 00000000 00000000 0001 03
1: 00000001 00000000 00010000 0001 01 /dev/printer
Onde ’Num’ é a área do kernel, ’RefCount’ é o número de usuários
da conexão, ’Protocol’ é atualmente sempre zero, ’Flags’
representam os indicadores internos do kernel com o status da
conexão. Tipo é sempre igual a 1 (datagramas de conexões a
domÃnios Unix ainda não são suportadas). ’St’ é o estado interno
da conexão e Path é o caminho (caso exista) da conexão.
pci Lista de todos os dispositivos PCI encontrados pelo kernel
durante sua inicialização e configuração.
scsi Um diretório com pseudo arquivo scsi de nÃvel médio scsi, e
vários diretórios de arquivos de controle de baixo nÃvel para
dispositivos SCSI. Contém um arquivo para cada dispositivo SCSI
do sistema, cada um com o status de alguma parte do subsistema
de E/S SCSI. Estes arquivos contêm estruturas ASCII que podem
ser lidas pelo comando cat.
Pode-se ainda gravar alguns arquivos para reconfigurar o
subsistema ou ativar ou desativar algumas funcionalidades.
scsi Uma lista de todos os dispositivos SCSI conhecidos pelo
kernel. A lista é similar a uma apresentada durante a
inicialização do sistema. SCSI atualmente suporta
somente o comando singledevice que permite ao
superusuário adicionar dispositivos sem desligar o
sistema à lista de dispositivos conhecidos.
Um comando echo â€â€™scsi singledevice 1 0 5 0â€â€™ >
/proc/scsi/scsi provocará que scsi1 pesquise no canal
SCSI 0 por um dispositivo de ID 5 LUN 0. Caso haja algum
neste endereço ou o endereço seja inválido, será
retornado um erro.
drivername
drivername pode atualmente ser: NCR53c7xx, aha152x,
aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio,
fdomain, in2000, pas16, qlogic, scsi_debug, seagate,
t128, u15-24f, ultrastore ou wd7000. Estes diretórios
mostram todos os arquivos de controle que registraram
pelo menos um HBA SCSI. Cada diretório contém um arquivo
registrado por dispositivo. Cada arquivo é nomeado após a
indicação do número dado pela inicialização.
Estes arquivos contêm a configuração do dispositivo e do
arquivo de controle estatÃsticas, etc.
A gravação nestes arquivos permite a execução de
diferentes tarefas. Por exemplo com os comandos de
superusuário latency e nolatency pode-se ligar ou
desligar o comando de medição de latência no arquivo de
controle eata_dma. Com os comandos lockup e unlock pode-
se controlar as pesquisas de controle de barramento
simuladas pelo arquivo de controle de dispositivo
scsi_debug .
self Este diretório referencia-se ao processo de acesso ao sistema de
arquivos /proc, e é idêntico ao diretório /proc nomeado pela
identificação do mesmo processo.
stat estatÃsticas do kernel e do sistema
cpu 3357 0 4313 1362393
O tempo dos ciclos do processador (em centésimos de
segundo) que o sistema despende em modo usuário, modo
usuário de baixa prioridade (nice), modo sistema e
tarefas disponÃveis, respectivamente. O último valor deve
ser 100 vezes a segunda entrada no pseudo arquivo uptime.
disk 0 0 0 0
As entradas para quatro discos não estão implementadas
ainda. Não estamos seguros sequer que serão, uma vez que
as estatÃsticas do kernel em outras máquinas normalmente
monitora tanto a taxa de transferência quanto E/S por
segundo e este somente permite um campo por dispositivo.
page 5741 1808
O número de páginas que entraram no sistema e o número de
páginas que sairam (do disco).
swap 1 0
O número de páginas de troca que foram recebidas e
enviadas de/para a área de troca.
intr 1462898
O número de interrupções recebidas a partir da
inicialização do sistema.
ctxt 115315
O número de mudanças de contexto que o sistema realizou.
btime 769041601
Tempo de inicialização, em segundos desde 1 de Janeiro de
1970.
sys Este diretório, presente desde a versão 1.3.57, contém um número
de arquivos e subdiretórios correspondente às variáveis do
kernel. Estas variáveis podem ser lidas e algumas vezes
modificadas usando-se o sistema de arquivos proc, e usando a
chamada ao sistema sysctl(2). Atualmente estão presentes os
subdiretórios kernel, net, vm e cada um contém diversos arquivos
e subdiretórios.
kernel Contém os arquivos domainname, file-max, file-nr,
hostname, inode-max, inode-nr, osrelease, ostype, panic,
real-root-dev, securelevel, version. com funções
bastante claras para o nome.
O arquivo somente para leitura file-nr fornece o número de
arquivos atualmente abertos.
O arquivo file-max fornece o número máximo de arquivos abertos
que o kernel pode administrar. Caso 1024 não seja suficiente,
pode-se tentar o comando
echo 4096 > /proc/sys/kernel/file-max
Similarmente, os arquivos inode-nr e inode-max indicam o número
atual e o número máximo de inodes.
Os arquivos ostype, osrelease, e version fornecem informações
retiradas de /proc/version.
O arquivo panic fornece acesso para leitura e gravação da
variável do kernel panic_timeout. Caso seja igual a zero, o
kernel irá testar esta variável sucessivamente; caso seja
diferente de zero indica que o kernel deve se auto reinicializar
após o número de segundos indicado.
O arquivo securelevel parece sem significado no momento - o
superusuário tem todos os recursos do sistema.
uptime Este arquivo contém dois números: o tempo de atividade do
sistema em segundos e o tempo gasto com o processamento de
processos em segundos.
version
Identifica a versão do kernel que está sendo executada. Por
exemplo:
Linux versão 1.09 (quinlan@phaze) #1 Dom Nov 19 01:51:54 EDT 1998.
VEJA TAMBÉM
cat(1), find(1), free(1), mount(1), ps(1), tr(1), uptime(1),
readlink(2), mmap(2), chroot(2), syslog(2), hier(7), arp(8), dmesg(8),
netstat(8), route(8), ifconfig(8), procinfo(8) e muito mais
EM CONFORMIDADE COM
Este texto está em razoável conformidade com o kernel 1.3.11. Por favor
atualize caso necessário.
Última atualuzação no Linux 1.3.11.
DICAS
Note que muitas cadeias de caracteres (por exemplo o ambiente e a linha
de comando) estão no formato interno, com subcampos separados por bytes
contendo o caracter nulo. Pode-se tornar as informações mais claras
caso se utilize od -c ou tr "\000" "\n" para acessá-las.
Esta página de manual não é completa e possivelmente contenha alguns
erros, e precisa ser atualizada freqüentemente.
PROBLEMAS
O sistema de arquivos /proc pode gerar problemas de segurança em
processos executados com chroot(2). Por exemplo, se /proc é montado na
hierarquia chroot, um chdir(2) para /proc/1/root retornará para o raiz
original do sistema de arquivos. Isso pode ser considerada uma
facilidade ao invés de um erro, uma vez que o Linux não suporta a
chamada fchroot(2).
TRADUZIDO POR LDP-BR em 21/08/2000.
André L. Fassone Canova <lonelywofl@blv.com.br> (tradução) Carlos
Augusto Horylka <horylka@conectiva.com.br> (revisão)
22/07/1996 PROC(5)