\subsubsection{ps}
\index{ps}
\subsubsection{NOME }
ps - relata a situação dos processos  \subsubsection{SINOPSE }
ps [\textbf{- }] [\textbf{lujsvmaxScewhrnu 
}] [\textbf{t\textit{xx }}] Programador Linux " [\textbf{O }[\textbf{+ }$|$\textbf{- }]\textit{k1 }[[\textbf{+ }$|$\textbf{- }]\textit{k2 }...]] [\textit{pids }] 

 há ainda 
algumas opções longas: 

 \textbf{--sort\textit{X}[\textbf{+}$|$\textbf{-}]\textbf{\textit{key}[,[\textbf{+}$|$\textbf{-}]\textbf{\textit{key}[,\textbf{...}]] 

 \textbf{--help} 

 \textbf{--version} 

 Mais opções 
longas estão em desenvolvimento.  }\subsubsection{DESCRIÇÃO }
\textbf{ps } fornece uma imagem dos 
processos atuais. Caso se deseje uma atualização repetitiva da situação, 
deve-se usar o comando \textbf{top}. Esta página de manual documenta a versão baseada 
no sistema de arquivos  \textit{/proc} do comando \textbf{ps}. 

 \subsubsection{OPÇÕES DE LINHA DE COMANDO 
}
As opções de linha de comando do \textbf{ps} são derivadas da versão BSD do \textbf{ps}, 
e não da versão do System V. 

 Os argumentos de linha de comando \textbf{não } devem 
ser precedidas por um caracter `-', porque se pretende utilizar este caracter 
para indicar o padrão Unix98 de argumentos de linhas de comando, enquanto 
a ausência de `-' indicará o estilo de comandos atual. 

 Por hora, ps irá emitir 
um aviso caso se use um `-' para indicar a opção curta, mas ainda assim funcionará. 
Caso se tenha shell scripts que utilizem um estilo de argumentos BSD para 
ps, fique atento aos avisos e altere-os no que se fizer necessário, ou 
os programas não funcionarão perfeitamente. Caso deseje evitar os avisos, 
basta configurar a variável de ambiente \textbf{I\_WANT\_A\_BROKEN\_PS .} 

 Há ainda 
as opções longas no estilo GNU; veja abaixo o seu funcionamento. 

 \begin{dispitems}
\item [\textbf{l }  ] formato 
longo 
\item [\textbf{u }  ] formato de usuário: fornece o nome do usuário e o horário de 
início do processo 
\item [\textbf{j }  ] formato de processos: pgid sid 
\item [\textbf{s}  ] formato de sinal 

\item [\textbf{v }  ] formato vm 
\item [\textbf{m }  ] lista informações de memória (combinado com o indicador 
\textbf{p} pode informar o número de páginas). 
\item [\textbf{f }  ] Formato de árvores da família 
na linha de comando 
\item [\textbf{a }  ] mostra também processos de outros usuários 
\item [\textbf{x } 
 ] mostra processos sem controle de terminal 
\item [\textbf{S }  ] adiciona o tempo de processamento 
e falhas nas páginas dos processos filhos. 
\item [\textbf{c }  ] nome do comando a partir 
de task\_struct 
\item [\textbf{e }  ] mostra o ambiente após a linha de comando e ` + ' 
\item [\textbf{w } 
 ] saída larga: não trunca as linhas de comandos para que caibam em uma 
única linha. Para ser exato, cada w que é especificado irá adicionar outra 
linha possível na saída. Caso o espaço não seja necessário, ele não será 
utilizado. Pode-se ter até 100 \textbf{w}'s. 
\item [\textbf{h }  ] sem cabeçalhos  
\item [\textbf{r }  ] somente os processos 
em execução 
\item [\textbf{n }  ] saída em formato numérico para  \textbf{USER} e \textbf{WCHAN}.  
\item [\textbf{t}\textit{xx}  ] somente 
processos controlando terminais tty \textit{xx }; para \textit{xx } pode-se usar ou o nome 
do dispositivo em "/dev" ou o nome com o qual  \textit{tty} ou \textit{cu} são divididos. 
Este é o reverso heurístico do processo usado por ps para lista o nome 
abreviado no campo \textbf{TT }, e.g. \textbf{ps -t1}. 
\item [\textbf{O}[\textbf{+}$|$\textbf{-}]\textbf{\textit{k1}[,[\textbf{+}$|$\textbf{-}]\textbf{\textit{k2}[,\textbf{...}]]  }}] Ordena a lista de 
processos de acordo com a ordem multinível especificada na seqüência de 
chaves \textit{curtas } em \textbf{SORT KEYS }, \textit{k1 }, \textit{k2 }, ... Especificações padrão de ordem 
existem para cada um dos vários formatos de \textbf{ps }. Eles podem ser sobrepostos 
por uma ordem especificada pelo usuário. O sinal `+' é opcional, e significa 
somente a direção padrão de uma chave. O sinal  `-' reverte a direção da chave 
que seja precedida por ele. Assim como \textbf{t } e \textit{pids }, a opção O deve ser a 
última opção em um argumento simples de comando, mas especificações em 
argumentos sucessivos podem ser concatenados.  
\item [\textit{pids}  ] lista somente os processos 
especificados; separados por vírgulas. A lista deve ser informada imediatamente 
após a última opção em um argumento de linha de comando, sem espaços, 
como por exemplo \textbf{ps -j1,4,5}. Listas especificadas em argumentos subseqüentes 
serão tratadas de forma diferenciada, por exemplo \textbf{ps -l 1,2 3,4 5 6} irá 
listar todos os processos de 1 a 6 no formato longo. Caso as identificações 
dos processos sejam informadas, eles serão listados, não importa de que 
forma. Caso um terminal tty seja informado, todos os processos associados 
a ele serão listados. Estas opções sobrepõem-se aos indicadores 'a' e 'x'. 
\end{dispitems}
 \subsubsection{COMANDO 
LONGO-OPÇÕES EM LINHA }
Estas opções são precedidas por um duplo hífen.  \begin{dispitems}
\item [\textbf{--sort\textit{X}[\textbf{+}$|$\textbf{-}]\textbf{\textit{key}[,[\textbf{+}$|$\textbf{-}]\textbf{\textit{key}[,\textbf{...}]] 
 }}}] Escolhe uma \textit{chave com múltiplas letras } a partir da seção \textbf{SORT KEYS } 
. \textit{X } pode ser qualquer caracter separador conveniente. Para compatibilidade 
com o padrão GNU, use `='.  O sinal `+' é opcional, uma vez que é o padrão. 
Por exemplo \textbf{ps -jax --sort=uid,-ppid,+pid} 
\item [\textbf{--help}  ] Lista uma mensagem de ajuda 
que sumariza o uso e fornece uma lista de chaves suportadas. Esta lista 
pode ser mais atualizada que esta página de manual.  
\item [\textbf{--version}  ] Lista a versão 
do programa ps e finaliza.  
\end{dispitems}
 \subsubsection{CHAVES DE ORDENAMENTO }
Note que os valores 
usados no ordenamento são valores internos ao uso do programa \textbf{ps } e \textit{não 
} são definidos em algum arquivo de formatos. Caso alguém queira ser voluntário 
para escrever funções especiais de comparação para esse tipo de funcionalidade, 
será bem-vindo.  

 CURTO      LONGO        DESCRIÇÃO  \begin{dispitems}
\item [c       cmd        
     o nome simples do executável   ] 
\item [C       cmdline         linha de comando 
completa   ] 
\item [f       flags           ind cf campo de formato longo F   ] 
\item [g 
      pgrp            identificação do grupo processador   ] 
\item [G       tpgid 
          controle id grupos processos tty   ] 
\item [j       cutime          tempo 
acumulado do usuário   ] 
\item [J       cstime          tempo acumulado do sistema 
  ] 
\item [k       utime           tempo do usuário   ] 
\item [K       stime           tempo 
do sistema   ] 
\item [m       min\_flt         número de minor page faults  ] 
\item [M   
    maj\_flt         número de major page faults  ] 
\item [n       cmin\_flt     
   acumulado de minor page faults  ] 
\item [N       cmaj\_flt        acumulado de 
major page faults  ] 
\item [o       session         identificação de sessão   ] 
\item [p 
      pid             identificação de processo   ] 
\item [P       ppid        
    identificação do processo pai   ] 
\item [r       rss             tamanho do 
conjunto residente   ] 
\item [R       resident        páginas residentes   ] 
\item [s   
    size            tamanho da memória em Kbytes   ] 
\item [S       share      
     quantid.  páginas compartilhadas   ] 
\item [t       tty             o  minor 
do dispositivo tty   ] 
\item [T       start\_time      tempo de início do processo 
  ] 
\item [U       uid             identificação do usuário   ] 
\item [u       user     
       nome do usuário   ] 
\item [v       vsize           total da memória virtual 
em bytes   ] 
\item [y       priority        prioridade pelo kernel   ]  
\end{dispitems}
 \subsubsection{DESCRIÇÕES 
DE CAMPOS }
\begin{dispitems}
\item [\textbf{PRI }  ] Este é um contador na estrutura da tarefa, contendo o 
tempo em  \textbf{HZ} do processo, dentro das fatias de tempo de processamento 
do processador.  
\item [\textbf{NI }  ] valor padrão do Unix para prioridade; um valor positivo 
significa menos tempo de uso de CPU.  
\item [\textbf{SIZE }  ] Tamanho da imagem virtual, 
considerando-se texto, dados e pilha.  TP 0.5i \textbf{RSS } Tamanho residente do 
conjunto; Kbytes do programa em memória.  
\item [\textbf{WCHAN }  ] Nome da função do kernel 
onde os processos estão aguardando, com o prefixo  `\textbf{sys\_}' retirado do nome 
da função. Caso  \textit{/etc/psdatabase} não exista, será listado somente um número 
hexadecimal.  
\item [\textbf{STAT }  ] Informações sobre a situação do processe. O primeiro 
campo será  \textbf{R} para em execução,  \textbf{S} para aguardando,  \textbf{D} para aguardando 
sem interrupção,  \textbf{T} para parado ou em depuração, ou  \textbf{Z} para um processo 
zumbi. O segundo campo contém  \textbf{W} caso o processo não tenha páginas residentes. 
O terceiro campos será  \textbf{N} caso o processo tenha um valor de prioridade 
positivo.  (\textbf{campo}NI).\textbf{} 
\item [\textbf{TT }  ] Controlando tty.  
\item [\textbf{PAGEIN }  ] Número de major page 
faults (page faults causam a leitura a partir do disco rígido e de páginas 
lidas do cache).  
\item [\textbf{TRS }  ] Tamanho residente do texto.  
\item [\textbf{SWAP }  ] Kilobytes (ou 
páginas se  \textbf{-p} é usado) em áreas de troca.  
\item [\textbf{SHARE }  ] Memória compartilhada. 
 
\end{dispitems}
 \subsubsection{ATUALIZAÇÃO }
O comando  \textbf{ps} é baseado no sistema de arquivos \textbf{proc} e funciona 
através da leitura de arquivos montados em  \textbf{/proc}. Este comando  \textbf{ps} não 
necessita da substituição de identificação de  \textbf{kmem} ou ter qualquer privilégio 
para ser executado.  \textit{Não forneça para ps qualquer permissão especial.} 

É 
necessário atualizar o arquivo  \textit{/etc/psdatabase} através da execução de 
 \textit{/usr/sbin/psupdate} para se obter informações significativas no campo 
 \textbf{WCHAN}  

 Assim como em procps-1.00, ps/top lêem  diretamente de System.map 
caso ele esteja disponível. O caminho de pesquisa para a resolução de endereços 
para símbolos é:              \$PS\_SYSTEM\_MAP 

             /boot/System.map-`uname 
-r` 

             /boot/System.map 

             /lib/modules/`uname -r`/System.map 


             /etc/psdatabase 

             /boot/psdatabase-`uname -r` 

    
         /boot/psdatabase, 

             /lib/modules/`uname -r`/psdatabase 


 

 \subsubsection{NOTAS }
O membro  \textbf{used\_math} de \textbf{task\_struct} não é apresentado, uma vez 
que  \textbf{crt0.s} verifica se math está presente. Isso faz com que o indicador 
math seja configurado em todos os processos, tornando-o inútil.  

Programas 
em área de troca no disco serão apresentados sem os argumentos de linha 
de comando, e a menos que a opção  \textbf{c} seja informada, será mostrado entre 
parênteses.  

\textbf{\%CPU} mostra o percentual de cputime/realtime. Não deve ser 
superior a 100\%. É igual ao tempo usado dividido pelos processos que estão 
em execução.  

Os campos \textbf{SIZE} e \textbf{RSS} não consideram as tabelas de páginas 
e o campo \textbf{estrutura da tarefa} de proc; o que significa pelo menos 12 Kb 
de memória residente.  \textbf{SIZE} é o tamanho virtual de proc (código+dados+pilha). 
 

Para executar o mapeamento do número de dispositivo para o nome, \textbf{ps } 
mantém um arquivo chamado "/etc/psdevtab" (atualizado toda vez que "/dev" 
seja atualizado \textit{e } as permissões permitam) . Caso as permissões não permitam 
atualização, todo acionamento de \textbf{ps } requer a execução do comando \textsf{stat(2)} 
para cada um dos arquivos presentes no diretório "/dev".  Caso as entradas 
em "/dev" mudem constantemente em seu sistema, deve-se executar \textit{ps } como 
superusuário com freqüência. Posso adicionar um arquivo em \$HOME caso a 
demanda dos usuários justifique.   \subsubsection{AUTOR }
\textbf{ps} foi originalmente escrito por 
Branko Lankester $<$lankeste@fwi.uva.nl$>$. Michael K. Johnson $<$johnsonm@redhat.com$>$ 
reescreveu uma porção significativa para uso com o sistema de arquivos 
proc, alterando algumas coisas no processo. Michael Shields $<$mjshield@nyx.cs.du.edu$>$ 
adicionou a funcionalidade lista de identificação de processos. Charles 
Blake $<$cblake@bbn.com$>$ adicionou o ordenamento multinível, a biblioteca estilo 
dirent, a base de dados nome para número, a pesquisa binária aproximada 
diretamente em System.map, e uma revisão de código e documentação. David 
Mossberger-Tang escreveu o suporte genérico a BFD para atualização automática 
de ps. Michael K. Johnson $<$johnsonm@redhat.com$>$ é o mantenedor atual.  

 Eventuais 
problemas devem ser comunicados para $<$procps-bugs@redhat.com$>$.  
