Linux e Unix
Verificando processos com os comandos ps e pstree no Linux
O comando ps gera um instantâneo dos processos atuais no terminal e permite mostrar informações sobre uma seleção dos processos ativos.
Sintaxe:
ps [opções]
Há três estilos de opções disponíveis:
1. Opções padrão do Unix: podem ser agrupadas e são precedidas por um hífen.
# ps -ax
2. Opções BSD: podem ser agrupadas e não são precedidas por um hífen.
# ps ax
3. Opções longas GNU: Não são agrupadas e são precedidas por dois hífens.
# ps --all
Podemos misturar opções de tipos diferentes livremente, porém tomando cuidado pois conflitos podem ocorrer.
Opções principais do comando ps:
-a Mostra processos de propriedade de outros usuários e vinculados a um terminal
-e Selecionar todos os processos. Idêntico a -A
-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.
-L “Lightweight Process” / LWP, mostra os threads associados a um processo específico.
-T Mostrar threads, com coluna SPID
Campos comuns exibidos nas saídas do comando:
USER: Usuário proprietário do processo
PID: ID 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 KiB
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
START: Horário em que o processo foi iniciado
COMMAND: Nome do comando e argumentos.
LWP: ightweight Process (Thread)
Estado dos processos retornados por ps:
Flags adicionais:
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)
Sendo que:
Executável: O processo pode ser executado (quando houver tempo de CPU disponível)
Dormente: O processo está aguardando algum recurso
Zumbi: O processo está tentando se destruir
Parado: O processo é suspenso (não há permissão para ser executado).
Exemplos:
1. Mostrar todos os processos:
# ps ax
A listagem continua, apenas uma parte é mostrada na figura acima. As opções ax nos trazem o PID, TTY, Status, Tempo de Execução e Comando que originou o processo.
2. Mostrar todos os processos com informações detalhadas:
# ps aux
3. Mostrando apenas os processos do usuário fabio:
# ps -f -u fabio
4. Mostrar os processos com informações técnicas adicionais, como PPID (PID do processo pai) , Flags associadas (F), Valor Nice (NI), prioridade do processo (PRI) e função do kernel no qual o processo está dormente (WCHAN):
# ps lax
5. Verificar o processo associado e informações gerais de um programa em execução, como o navegador web Iceweasel. Para isso filtraremos a saída do comando ps com o grep:
ps aux | grep iceweasel
Veja que o PID do processo principal do Iceweasel é 4031. O PID 4087 mostrado é do próprio processo grep que usamos para filtrar a saída do comando ps.
6. Mostrar os threads associados a um processo específico. Por exemplo, suponhamos que o navegador Iceweasel esteja rodando no momento. Podemos descobrir seu PID (como fizemos no exemplo anterior) e depois os threads associados usando o comando ps com a opção -L (“Lightweight Process”, LWP):
ps -p 4031 -L
Note a grande quantidade de threads sendo executadas pelo processo de PID 4031. Cada thread possui seu próprio TID (Thread identification), que é o número que aparece na segunda coluna da listagem acima.
7. Classificar os processos em ordem de utilização da CPU (“pcpu”):
# ps aux --sort=-pcpu
Veja que os valores na coluna %CPU estão em ordem decrescente.
8. Mostrar apenas colunas especificadas, como por exemplo, PID, % de uso da cpu e % de uso da memória RAM:
$ ps -e -o pid,pcpu,pmem
9. Mostrar o PID, usuário e tempo de execução do processo - que não é exibido por padrão. Usaremos o parâmetro etime (Elapsed Time / Tempo Decorrido):
# ps -e -o pid,user,etime
10. Mostrar processos com informações detalhadas, e threads na coluna SPID:
# ps aux -T
Comando pstree
O comando pstree permite exibir uma lista hierárquica de processos no formato de árvore.
Sintaxe:
pstree [opções]
Exemplos:
pstree -p Inclui PIDs na saída
pstree 100 Exibe a subárvore de processos sob o processo de PID 3670:
As Threads são exibidas entre chaves nas saídas desses comandos.
Há muitos outros comandos que podemos usar para verificar e gerenciar processos, como o top, nice, renice, htop, entre outros. Os estudaremos em outros tutoriais.
Até mais!
loading...
-
Comandos Pinky E W - Mostrando Informações Sobre Usuários Logados No Sistema Linux
Neste arquivo estudaremos dois comandos muito úteis para visualizar informações sobre os usuários logado atualmente no sistema: pinky e w. Comando pinky O comando pinky é como um comando finger “mais leve”, sendo utilizado para imprimir na...
-
Comando Jobs No Linux
No Unix, há uma pequena diferença entre processos e jobs. Um job tipicamente é uma linha de comandos, que pode incluir um único comando, um shell script, ou vários comandos conectados por pipes. Em uma cadeia de comandos com pipes, cada comando...
-
Comando Nohup - Linux
Quando executamos processos no Unix, esses processos podem rodar em foreground ou em background. Em um processo foreground, esperamos no terminal o término do processo. Desta forma, não podemos usar o terminal até que o processo tenha terminado. Podemos...
-
Comando Lsof - Listar Arquivos E Processos Abertos
lsof significa "listar arquivos abertos", e é um comando usado para retornar uma listagem de todos os arquivos abertos e dos processos que os abriram.Um arquivo aberto pode ser um arquivo de disco, diretório, biblioteca, pipes, dispositivos e sockets...
-
Comandos Init E Telinit
Os comandos init e telinit permitem colocar o sistema em um nível de execução desejado, de 0 a 6, ou S e s, que são equivalentes ao runlevel 1. Na verdade, o telinit é um link para o init como podemos ver na figura abaixo: Um nível de execução...
Linux e Unix