ps

De LinuxPédia
Ir para: navegação, pesquisa

O comando ps serve para verificar informações e estado de um processo no momento que entramos com o comando, numa analogia seria como uma “foto” do processo no momento. Esse comando é muito utilizado para obtermos informações dos processos em execução e para verificar se um processo está rodando no momento.

Mais informações ver processos.

Sintaxe:

ps [opções]

principais opções do comando:

-a Mostra processos de propriedade de outros usuários e vinculados a um terminal
-e Selecionar todos os processos. Idêntico a -A
-o campo1,campo2,... Organiza as colunas de acordo com a lista de campos inserida pelo usuário
-l Formato longo, incluindo prioridade, PPID, etc.
-r Mostrar apenas processos em execução
-u Formato de usuário, com nomes de usuário e hora de início dos processos
-x Inclui processos sem terminal de controle (daemons, GUI.)
-U usuário Exibe processos de propriedade do usuário.
--sort campo Lista as saídas em ordem crescente/descrescente de acordo com o campo especificado.
-L “Lightweight Process” / LWP, mostra os threads associados a um processo específico.
-T Mostrar threads, com coluna SPID

sintaxe das colunas para inserir com a opção -o e --sort:

SINTAXE CAMPO SIGNIFICADO
pcpu  %CPU  % de CPU usada
ppid PPID número de PID do processo pai
user USER Usuário que roda o processo
command COMMAND caminho/nome do processo que está rodando
pid PID Número de PID do processo
nice NI úmero de nice (prioridade) do processo
group GROUP grupo do usuário que roda o processo
etime ELAPSED Tempo de execução total do processo
time TIME Tempo total de uso de CPU para esse processo

Principais campos exibidos na saída do comando ps:

USER: Usuário proprietário do processo

UID: Número de identificação do usuário dono do processo

PID: ID do processo

PPID: ID do processo pai

F: Flags associadas

NI: valor de nice do processo

PRI: Prioridade do processo

%CPU: % dos recursos de CPU que o processo está usando

%MEM: % da memória real que o processo está usando

VSZ: Tamanho virtual do processo em KB

RSS: Resident Set Size (Total de memória usada pelo processo e seus arquivos)

TTY: Identificador do terminal de controle

STAT: Estado de processo atual

SIZE: tamanho do código da tarefa em Kilobytes

START: Horário em que o processo foi iniciado

COMMAND: Nome do comando e argumentos.

LWP: ightweight Process (Thread)

WCHAN: Função do kernel no qual o processo está dormente:

TIME: tempo total da CPU que foi usado pelo processo desde que foi iniciado.

Os estados dos processos podem ser:

  • R = Executável
  • S = Dormente
  • Z = Zumbi
  • D = Espera no disco
  • T = Rastreado ou interrompido

Flags adicionais (segunda letra em diante no campo STATS):

  • W = Processo paginado em disco
  • < = O processo tem uma prioridade maior que a normal
  • N = O processo tem uma prioridade menor que a normal
  • L = Algumas páginas são bloqueadas no núcleo (kernel)

Vendo essa sintaxe o uso do comando pode parecer difícil mas não é. Para facilitar vamos aos casos de utilização.

Utilização

Listar todos os processos rodando no sistema

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 185312  5924 ?        Ss   16:34   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    16:34   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    16:34   0:00 [ksoftirqd/0]

Listar todos os processos executando no sistema, avançando tela por tela

Coloca os dados que cabem na tela do terminal. Para avançar uma linha teclamos [enter] e para avançar uma tela teclamos [espaço].

# ps aux | more
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 185312  5924 ?        Ss   16:34   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    16:34   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    16:34   0:00 [ksoftirqd/0]
--mais--

Verificar se um processo está rodando

Supondo que desejamos verificar se o processo com nome firefox está rodando no sistema:

ps aux | grep processo

onde processo é o nome do programa ou processo que procuramos.

Exemplo:

Mostrar informações do processo que contém o nome firefox:

# ps aux | grep firefox
nimai     2698 11.1  5.1 1264504 421516 ?      Sl   16:36  17:17 /usr/lib/firefox/firefox
root      5363  0.0  0.0  14252   940 pts/1    S+   19:11   0:00 grep --color=auto firefox

Lembrando que o processo do grep com argumento firefox também aparece na resposta do comando, logo para o firefox estar rodando é necessário que essa saída tenha mais de uma linha de resposta.


Mostrando apenas processos de um usuário específico

ps -f -u usuário

Exemplo: Mostrar processos do usuário root por exemplo:

# ps -f -u root
PID TTY          TIME CMD
    1 ?        00:00:01 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0


Mostrar processos com informações adicionais

As informações mostradas são prioridade, flags associadas, valor de nice, etc.

# ps lax
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0 185312  5924 ep_pol Ss   ?          0:01 /sbin/init splash
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/0]


Mostrar os processos em ordem crescente/decrescente por campo

  • Em ordem crescente:

ps aux --sort=campo


  • Em ordem descrescente:

ps aux --sort=-campo


Exemplos:

Mostrar os processos organizados por ordem decrescente de uso de CPU:

obs. A sintaxe utilizada para identificar cada campo está na tabela acima desse texto.

# ps aux --sort=-pccpu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
john     2753 19.7  8.5 1561724 695176 ?      Sl   16:36  32:29 /usr/lib/firefox/plugin-container -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2698 true tab
john     2698 10.8  5.4 1265208 445548 ?      Sl   16:36  17:55 /usr/lib/firefox/firefox


Mostrar as colunas do modo que desejarmos

Essa é uma forma bem interessante de usar o comando, de maneira a só exibir os campos que realmente interessam no momento.

ps -ax -o campo1,campo2,campo3,…


Exemplos:


Mostrando as colunas id do processo, número de nice, usuário, porcentagem de CPU e comando (podemos usar essas opções em conjunto com o comando --sort):

# ps -ax -o pid,ni,user,pcpu,command
 PID  NI USER     %CPU COMMAND
    1   0 root      0.0 /sbin/init splash
    2   0 root      0.0 [kthreadd]
    3   0 root      0.0 [ksoftirqd/0]


Mostrando as mesmas colunas organizando as linhas de forma decrescente de uso de CPU:

# ps -ax -o pid,ni,user,pcpu,command --sort=-pcpu
 PID  NI USER     %CPU COMMAND
 2753   0 john    19.1 /usr/lib/firefox/plugin-container -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 2698 true tab
 2698   0 john    10.6 /usr/lib/firefox/firefox
 1930   0 root      4.4 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8


Mostrar as colunas comando, id do processo e tempo decorrido:

# ps -e -o pid,etime,command
 PID     ELAPSED COMMAND
    1    02:57:34 /sbin/init splash
    2    02:57:34 [kthreadd]
    3    02:57:34 [ksoftirqd/0]
    5    02:57:34 [kworker/0:0H]

Outros comandos úteis para trabalharmos com processos:

  • Para visualizar os processos rodando e suas características:

top, pstree, iotop

  • Para enviar sinais aos processos:

kill, killall, pkill, xkill

  • Para alterar prioridade dos processos:

nice, renice

  • Para listar arquivos e soquetes abertos pelos processos:

lsof


Fontes

yahoo respostas Acessado em 9/11/2016

dailson.blogspot.com.be gerenciamento de processos no linux Acessado em 9/11/2016

Verificando processos com comandos Acessado em 9/11/2016