\section{proc}
\index{proc}
\subsubsection{NOME}
proc - pseudo sistema de arquivos de informações de processos.   \subsubsection{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. 

   \begin{dispitems}
\item [\textit{[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:  
\item [\textit{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. 
\item [\textit{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 

 
 
\end{dispitems}


Note que o comando pwd está freqüentemente incorporado no interpretador 
de comandos e pode não funcionar exatamente desta forma neste contexto. 


 \begin{dispitems}
\item [\textit{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 "$\backslash$000" "$\backslash$n" 

  
\end{dispitems}


(caso alguém queira saber porque fazer isso, veja 
o comando \textit{\textsf{lilo}(8)}.) \begin{dispitems}
\item [\textit{exe}  ] um ponteiro para o binário que está sendo executado 
e aparece como uma ligação simbólica. \textit{\textsf{readlink(2)}} no arquivo especial exe 
retorna o seguinte: 
\end{dispitems}


 [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). 

 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  \textit{/proc/[número]/exe} para executar uma cópia 
do mesmo processo como [número]. 

 \textit{\textsf{find}(1)} com a opção -inum pode ser usado 
para localizar um arquivo. \begin{dispitems}
\item [\textit{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... 
\end{dispitems}


 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: 
 

CWfoobar -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. \begin{dispitems}
\item [\textit{maps}  ] Um arquivo contendo o mapa 
atual de regiões da memória e suas permissões de acesso. 
\end{dispitems}


 O formato é mostrado na tabela~\ref{maparegiao}.

\begin{table}[htbp]
  \centering
  \begin{tabular}{||lllll||}
    \hline
    \emph{endereço}   & \emph{perms}   & \emph{desloc.} & \emph{disp} & \emph{inode} \\
    \hline
    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   \\
    \hline
  \end{tabular}
  \caption{Mapa das regiões de memória e seus acessos}
  \label{maparegiao}
\end{table}

   

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. \begin{dispitems}
\item [\textit{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  \textit{\textsf{mmap(2)}} concorrentemente, e não poderá até que  \textit{\textsf{mmap(2)}} seja 
adicionada ao kernel (o que pode ocorrer em breve). 
\item [\textit{mmap}  ] Diretório dos 
mapas gerados por \textit{\textsf{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. 
\end{dispitems}


 "0" é normalmente libc.so.4. 


 \textit{/proc/*/mmap} foi removido do kernel do Linux na versão 1.1.40 (e realmente 
\textbf{estava} obsoleto) \begin{dispitems}
\item [\textit{root}  ] Unix e Linux suportam a idéia de um raiz de sistema 
de arquivos por processo, definidos pela chamada ao sistema \textit{\textsf{chroot(2)}} 
. Root aponta o raiz do sistema de arquivos, e comporta-se como exe, fd/*, 
etc... 
\item [\textit{stat}  ] Informações sobre o status do processo. Isso é fornecido por 
\textit{\textsf{ps(1)}} . 
\end{dispitems}


 Os campos, em ordem, com as suas propriedades específicas em  
\textit{\textsf{scanf(3)}} são:  \begin{dispitems}
\item [\textit{pid } \%d  ] Identificação do processo. 
\item [\textit{comm } \%s  ] O nome do 
arquivo do executável entre parênteses. É visível mesmo que o processo 
esteja na área de troca. 
\item [\textit{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. 
\item [\textit{ppid } \%d  ] O 
PID do processo pai. 
\item [\textit{pgrp } \%d  ] O ID do grupo do processo. 
\item [\textit{session } \%d  ] O 
ID da sessão do processo. 
\item [\textit{tty } \%d  ] O tty que o processo usa. 
\item [\textit{tpgid } \%d  
] A ID do grupo do processo que atualmente detém o tty no qual o processo 
está conectado. 
\item [\textit{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. 
\item [\textit{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. 
\item [\textit{cminflt } \%u  ] O número de erros menores do 
processo e de seus processos filhos. 
\item [\textit{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. 
\item [\textit{cmajflt } \%u  ] O número de erros maiores do processo e de seus 
processo filhos. 
\item [\textit{utime } \%d  ] O número de ciclos do processador que o processo 
tem previsto em modo usuário. 
\item [\textit{stime } \%d  ] O número de ciclos do processador 
que o processo tem previsto em modo kernel. 
\item [\textit{cutime } \%d  ] O número de ciclos 
do processador que o processo e seus filhos têm previstos em modo usuário. 

\item [\textit{cstime } \%d  ] O número de ciclos do processador que o processo e seus filhos 
têm previstos em modo kernel. 
\item [\textit{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. 
\item [\textit{priority } \%d  ] O valor padrão acrescido de 15. O valor nunca 
é negativo no kernel. 
\item [\textit{timeout } \%u  ] O tempo em ciclos do processador do 
próximo período de espera. 
\item [\textit{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. 
\item [\textit{starttime } \%d  ] Tempo, em ciclos do processador, que 
o processo iniciou após o sistema ser iniciado. 
\item [\textit{vsize } \%u  ] Tamanho da memória 
virtual. 
\item [\textit{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. 
\item [\textit{rlim } \%u  ] Limite em bytes do rss do processo (normalmente 
2,147,483,647). 
\item [\textit{startcode } \%u  ] O endereço acima do qual o texto do  programa 
deve ser executado. 
\item [\textit{endcode } \%u  ] O endereço abaixo do qual o texto do programa 
deve ser executado. 
\item [\textit{startstack } \%u  ] O endereço de início da pilha. 
\item [\textit{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. 
\item [\textit{kstkeip } \%u  ] EIP atual (ponteiro 
da instrução com 32 bits). 
\item [\textit{signal } \%d  ] O mapa de bits dos sinais pendentes 
(normalmente zero). 
\item [\textit{blocked } \%d  ] O mapa de bits dos sinais bloqueados (normalmente 
0, 2 para ambientes de trabalho). 
\item [\textit{sigignore } \%d  ] O mapa de bits dos sinais 
ignorados. 
\item [\textit{sigcatch } \%d  ] O mapa de bits de sinais recebidos. 
\item [\textit{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 \textit{ps -l } para ver o campo WCHAN em ação). 
\end{dispitems}
  

 \begin{dispitems}
\item [\textit{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 \textit{cpu } a qual é a CPU atual em uso e \textit{BogoMIPS } uma constante do sistema 
que é calculada durante a inicialização do sistema.  
\item [\textit{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. 
\item [\textit{dma}  
] Lista dos canais DMA \textit{ISA } (acesso direto à memória) registrados em uso. 

\item [\textit{filesystems}  ] lista dos sistemas de arquivos que foram compilados com o 
kernel. Pode ser usado por  \textit{\textsf{mount(1)}} para pesquisar através de diferentes 
sistemas de arquivos quando nenhum é especificado. 
\item [\textit{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. 
\item [\textit{ioports}  ] Lista das portas 
de Entrada-Saída registradas que estão em uso. 
\item [\textit{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. 
\end{dispitems}


 O tamanho total 
do arquivo é o tamanho da memória física (RAM) mais 4 Kb. \begin{dispitems}
\item [\textit{kmsg}  ] Este arquivo 
pode ser usado ao invés da chamada ao sistema \textit{\textsf{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 \textit{\textsf{syslog(2)}} para registrar as mensagens do kernel. 
\end{dispitems}


 Informações 
deste arquivos são recuperadas com o programa \textit{\textsf{dmesg(8)}} . \begin{dispitems}
\item [\textit{ksyms}  ] Contém 
as definições dos  símbolos exportados pelo kernel usados pelas ferramentas 
de \textit{módulos(X)} para dinamicamente ligar e vincular módulos carregáveis. 

\item [\textit{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 \textit{\textsf{uptime(1)}} e outros. 
\item [\textit{malloc}  ] Este arquivo somente 
está presente se CONFIGDEBUGMALLOC for definido durante a compilação. 
\item [\textit{meminfo} 
 ] É usada pelo comando \textit{\textsf{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 \textit{\textsf{free(1)}} , exceto pelo fato de estar em bytes ao invés de Kb. 

\item [\textit{modules}  ] Uma lista dos módulos carregados pelo sistema. 
\item [\textit{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 \textit{\textsf{netstat(8)}} possibilitam 
um acesso muito mais adequado a estes arquivos.  
\item [\textit{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 é mostrado na tabela~\ref{imagem}
\end{dispitems}

\begin{table}[htbp]
  \centering
  \begin{tabular}{||llll||}
    \hline
 \emph{IP address}   & \emph{HW type} & \emph{Flags} & \emph{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 \\
    \hline
  \end{tabular}
  \caption{Imagem da tabela ARP do kernel}
  \label{imagem}
\end{table}


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 'HW address' é o mapeamento da camada física para cada endereço IP se 
conhecido.. \begin{dispitems}
\item [\textit{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 \textit{\textsf{ifconfig(8)}} para apresentar relatórios do status do dispositivo. 
   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 

    
\item [\textit{ipx}  ] Nenhuma informação. 

\item [\textit{ipx\_route}  ] Nenhuma informação. 
\item [\textit{rarp}  ] Este arquivo usa o mesmo formato do 
arquivo  \textit{arp} e contém a base de dados de mapeamento reverso usado para 
prover os serviços de pesquisa de endereços reversos do \textit{\textsf{rarp(8)}} . Caso 
RARP não esteja configurado no kernel este arquivo não estará presente. 

\item [\textit{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. 
\item [\textit{route}  ] Nenhuma informação, 
mas parece similar ao  \textit{\textsf{route(8)}.} 
\item [\textit{snmp}  ] Este arquivo contém dados em formato 
ASCII necessários para o gerenciamento de IP, ICMP, TCP e UDP por um agente 
snmp.  
\item [\textit{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. "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" não são usados por RAW. 
O campo uid contém a identificação do criador da conexão. 
\item [\textit{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. "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. 

O formato é mostrado  a seguir:

%O formato é mostrado na tabela~\ref{protocoloudp}.
%\small
%\begin{table}[htbp]
%  \centering
%  \begin{tabular}{||llllllll||}
%    \hline
%\emph{sl}  \emph{local\_address} \emph{rem\_address}   \emph{st} \emph{tx\_queue rx\_queue} \emph{tr rexmits}  \emph{tm->when} \emph{uid} \\
%    \hline
% 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 \\
%    \hline
%  \end{tabular}
%  \caption{Tabela de conexões UDP}
%  \label{protocoloudp}
%\end{table}
%
%\normalsize

\small
\begin{verbatim}
sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid
 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
\end{verbatim}

\normalsize
    
\item [\textit{unix}  ] Lista de conexões 
com domínios Unix presentes no sistema e seus status.  
O formato é mostrado a seguir:  

\begin{verbatim}
Num RefCount Protocol Flags    Type St Path
 0: 00000002 00000000 00000000 0001 03
 1: 00000001 00000000 00010000 0001 01 /dev/printer
\end{verbatim}
   
\end{dispitems}


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.  \begin{dispitems}
\item [\textit{pci}  ] Lista de 
todos os dispositivos PCI encontrados pelo kernel durante sua inicialização 
e configuração. 
\item [\textit{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.  
\item [\textit{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 \textit{singledevice } que 
permite ao superusuário adicionar dispositivos sem desligar o sistema 
à lista de dispositivos conhecidos. 
\end{dispitems}


 Um comando  \textbf{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. \begin{dispitems}
\item [\textit{drivername}  ] \textit{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. 
\end{dispitems}


 Estes arquivos normalmente 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 \textit{latency } e \textit{nolatency } pode-se ligar 
ou desligar o comando de medição de latência no arquivo de controle eata\_dma. 
Com os comandos  \textit{lockup } e \textit{unlock } pode-se controlar as pesquisas de controle 
de barramento simuladas pelo arquivo de controle de dispositivo scsi\_debug 
.   \begin{dispitems}
\item [\textit{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. 
\item [\textit{stat}  ] estatísticas do kernel e do sistema  
\item [\textit{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, 
modo sistema e tarefas disponíveis, respectivamente. O último valor deve 
ser 100 vezes a segunda entrada no pseudo arquivo uptime. 
\item [\textit{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. 
\item [\textit{page 5741 
1808 }  ] O número de páginas que entraram no sistema e o número de páginas 
que sairam (do disco). 
\item [\textit{swap 1 0 }  ] O número de páginas de troca que foram 
recebidas e enviadas de/para a área de troca. 
\item [\textit{intr 1462898 }  ] O número de 
interrupções recebidas a partir da inicialização do sistema. 
\item [\textit{ctxt 115315 
}  ] O número de mudanças de contexto que o sistema realizou. 
\item [\textit{btime 769041601 
}  ] Tempo de inicialização, em segundos desde 1 de Janeiro de  1970. 
\end{dispitems}
 \begin{dispitems}
\item [\textit{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 
\textit{proc }, e usando a chamada ao sistema \textit{\textsf{sysctl}(2)\textit{}.} Atualmente estão presentes 
os subdiretórios  \textit{kernel}, \textit{net}, \textit{vm} e cada um contém diversos arquivos e 
subdiretórios.  
\item [\textit{kernel}  ] Contém os arquivos \textit{domainname}, \textit{file-max}, \textit{file-nr}, 
\textit{hostname},  \textit{inode-max}, \textit{inode-nr}, \textit{osrelease}, \textit{ostype},  \textit{panic}, \textit{real-root-dev}, 
\textit{securelevel}, \textit{version}. 
\end{dispitems}


O arquivo somente para leitura \textit{file-nr} fornece o número 
de arquivos atualmente abertos. 

O arquivo  \textit{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 \textit{inode-nr} e \textit{inode-max} indicam o número atual e o número máximo 
de inodes. 

Os arquivos \textit{ostype}, \textit{osrelease}, e \textit{version} fornecem informações 
retiradas de  \textit{/proc/version}. 

O arquivo \textit{panic} fornece acesso para leitura 
e gravação da variável do kernel  \textit{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 \textit{securelevel} parece sem significado no momento 
- o superusuário tem todos os recursos do sistema.  \begin{dispitems}
\item [\textit{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. 
\item [\textit{version}  ] Identifica 
a versão do kernel que está sendo executada. Por exemplo:   Linux versão 
2.037 (quinlan@phaze) \#1 Dom Nov 19 01:51:54 EDT 1998. 

   
\end{dispitems}


    \subsubsection{VEJA TAMBÉM 
}
\textbf{\textsf{cat(1)}} \textbf{\textsf{find(1)},} \textbf{\textsf{free(1)},} \textbf{\textsf{mount(1)},} \textbf{\textsf{ps(1)},} \textbf{\textsf{tr(1)},} \textbf{\textsf{uptime(1)},} \textbf{\textsf{readlink(2)},} 
\textbf{\textsf{mmap(2)},} \textbf{\textsf{chroot(2)},} \textbf{\textsf{syslog(2)},} \textbf{\textsf{hier(7)},} \textbf{\textsf{arp(8)},} \textbf{\textsf{dmesg(8)},} \textbf{\textsf{netstat(8)},} 
\textbf{\textsf{route(8)},} \textbf{\textsf{ifconfig(8)},} \textbf{\textsf{procinfo(8)}} e muito mais  \subsubsection{EM CONFORMIDADE COM }
Este 
texto está em razoável conformidade com o kernel 1.3.11. Por favor atualize 
caso necessário. 

  \subsubsection{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 \textit{od -c } ou \textit{tr "$\backslash$000" "$\backslash$n" } para acessá-las. 

 Esta 
página de manual não é completa e possivelmente contenha alguns erros, 
e precisa ser atualizada freqüentemente.  \subsubsection{PROBLEMAS }
O sistema de arquivos 
\textit{/proc} pode gerar problemas de segurança em processos executados com  \textbf{\textsf{chroot}(2)}. 
Por exemplo, se \textit{/proc} é montado na hierarquia \textbf{chroot,} um \textbf{\textsf{chdir}(2)} para 
\textit{/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 \textbf{\textsf{fchroot}(2)}.
