Sitemap

Processos

8 min readJan 27, 2025

--

Processos representam programas que foram chamados. Processos ficam alocados na memória; cada processo também tem seu PID, que é a identificação de cada processo.

Init é um processo inicializado pelo kernel, que é o primeiro processo e tem PID 1, de inicialização de todos os outros processos.

Processos daemons são processos que executam em segundo plano e que sustentam o sistema.

Processos estão em /proc, onde cada um dos números é o pid de um processo.

Press enter or click to view image in full size
Press enter or click to view image in full size
Aqui estou dentro do diretório 1, que é o processo init

Como os processos são extremamente importantes ao sistema, é interessante testar os comandos em uma máquina virtual.

Processos possuem estados:

Terminated/Finalizado: processo acabado.

Running/rodando(ou ativo ou executando): quando está em execução no processador.

Ready/pronto: quando só precisa de espaço para ser executado pelo processador.

Waiting/esperando: que espera por uma nova instrução para executar.

Sumário de comandos para gerenciar processos que serão comentados:

jobs,

&,

control z,

bg, fg,

ps,pgrep, pstree,

top, htop, btop, bpytop,

sleep,

kill, pkill, killall,

fuser, nice e renice.

jobs

Lista processos executando em segundo plano/ background da sessão do terminal atual. Jobs possuem um jobid como identificador.

Press enter or click to view image in full size

Flags principais:

-r: running, exibe os jobs rodando;

-l: list, exibe o PID;

-s: stopped, exibe os jobs parados.

&:

Já executa um programa em segundo plano, em background.

Neste exemplo, abri o thunar pelo terminal, mas tive meu terminal livre para poder executar o htop também, por exemplo.

Press enter or click to view image in full size

Control Z:

Pode pausar um processo em execução.

Press enter or click to view image in full size

bg:

Manda um processo para segundo plano/background, baseado em seu id.

bg %pid

fg:

Manda um processo para o primeiro plano/foreground, baseado em seu id.

fg %pid

Exibição dos processos com: pstree, ps, top, htop, btop e bpytop onde ps é estático, top, htop, btop e bpytop são dinâmicos.

ps

É um comando estático, que ilustra os processos no momento, sem atualização constante. Alguns usos mais comuns:

ps aux

ou para ter paginação:

ps aux | less

(a = all, u=user, x=executing)

Press enter or click to view image in full size

Colunas do ps aux:

USER é o usuário dono do processo;

PID é o número do processo;

Porcentagem de uso de cpu;

Porcentagem de uso de memória;

VSZ: Virtual Memory Size, total da memória virtual alocada pelo processo;

RSS: Resident Set Size, o quanto de memória que o processo está usando;

TTY: terminal do processo;

STAT: status do processo:

R: running, executando;

S: sleep, vivo mas sem fazer algo;

T: stopped, parado;

Z: zombie, processo morto, mas não totalmente e ainda não foi finalizado completamente, consumindo recursos;

D: sleep, sem poder ser interrompido;

l: modo multi-thread;

s: processo líder da sessão;

I: idle, de ocioso, não está executando tarefas;

N: processo com prioridade baixa;

<: prioridade modificada para mais alta que o padrão;

+: foreground, funciona em primeiro plano;

START: data de início do programa;

TIME: tempo total que o processo usou a CPU;

COMMAND: o comando para o início do processo.

ps -ef

-e: exibe todos os processos

-f: mostra uma listagem em full format, com detalhes

Press enter or click to view image in full size

Exibe os processos do usuário atual (com o $USER):

ps -u $USER

Press enter or click to view image in full size

Combando com o grep para pegar informações sobre o processo do thunar, por exemplo:

ps aux | grep thunar

Printar o número do processo thunar:

ps aux | grep thunar | grep -v grep | awk -F “ “ ‘{print $2}’

Também printar o número do processo thunar, porém digitando menos:

pgrep thunar

Press enter or click to view image in full size

pstree (necessário instalar pstree e psmisc)

Mostra os processos hierarquizados em árvore.

Press enter or click to view image in full size

lsof

Listagem de arquivos que estão em uso por processos:

lsof

Para verificar qual processo abriu um arquivo específico:

lsof +D /diretorio/arquivo_especifico

Verificando logs:

lsof +D /var/log

Verificando processos no ponto de montagem:

lsof +D /media/disco

(ou lsof +D /mnt)

Flags:
-c:
busca por nomes. Exemplo: lsof -c brave.

-u usuário_especificado: faz a listagem dos arquivos apenas de um determinado usuário especificado com seu nome ou ID.

-p PID_especificado: faz listagem do arquivos com o PID especificado.

-s: exibe o tamanho dos arquivos listados.

-i: puro, exibe listagem de arquivos relacionados a um endereço de rede, seja IP ou porta. Se não tiver endereço especificado, lista todos arquivos relacionados com algum endereço de rede.

Para porta: lsof -i TCP:numero_da_porta

ou: lsof -i :numero_da_porta

Para porta, entre as portas 1 a 100: lsof -i TCP:1–100

Para processos que usam IPv4: lsof -i 4

Get Linuxmon’s stories in your inbox

Join Medium for free to get updates from this writer.

Para processos que usam IPv6: lsof -i 6

top

Processos gerenciáveis dinamicamente.

Press enter or click to view image in full size

Com o top já ativo, pode-se digitar:

u + nome de usuário: ilustrará os processos do usuário digitado;

f: disponibiliza as colunas que serão exibidas no top;

s: altera o ordenamento das colunas, com o cursor em cima do processo desejado a ser ordenado;

r: altera nice;

k: kill, pra escolher o sinal.

htop

Versão melhorada do top.

Press enter or click to view image in full size

Colunas do htop, respectivamente:

PID: id do processo;

USER: Usuário dono do processo;

PRI: prioridade(falarei depois);

NI: nice value(falarei depois sobre o comando);

VIRT: virtual memory, ou seja memória swap/memória virtual;

RES: resident memory é a memória física;

SHR: shared memory é a memória compartilhada;

S: estado do processo;

CPU%: % de uso de cpu;

MEM%: % de uso de memória;

TIME+: tempo;

Command: comando usado para chamar o processo.

Apertando tab ou clicando em I/OP, temos colunas diferentes:

Press enter or click to view image in full size

Outras colunas:

IO: gastos dos dispositivos de entrada/saída em bytes por segundo;

DISK R/W: total de leitura e gravação no disco de cada processo;

DISK READ: dados lidos no disco;

DISK WRITE: dados escritos no disco;

SWPD%: porcentagem de uso de memória virtual/memória swap usada pelo processo;

IOD%: porcentagem de tempo que o processo espera por ação de I/O.

Alguns comandos no htop:

F1: Help;

F2: personaliza as configurações;

F3: busca por nome dos processos;

F4: filter é parecido com o search, mas mostra todos os processos com o nome digitado;

F5: mostra processos em hierarquia de árvore;

F6: organiza os processos baseado em PID ou Usuário, prioridade, nice, memória virtual/ residente/ compartilhada, estado, percentual de cpu, percentual de memória, tempo e comando;

F7: Nice -: abaixa a prioridade de um processo;

F8: Nice +: aumenta a prioridade de um processo;

F9: mostra todos os sinais;

F10: Quit.

Barra de espaço: marca processos que deseja adicionar mais destaque;

Shift U: desmarca todos os processos;

T: exibe processos em hierarquia de árvore;

Tab: exibe mais parâmetros/colunas dos processos;

L: marca processos travados;

K: marca processos do kernel.

Cada sinal tem um número e os principais sinais são:

SIGHUP 1: desliga o processo.

SIGINIT 2: interrompe o processo.

SIGQUIT 3: para o processo.

SIGKILL 9: mata, encerrando processo de forma abrupta.

SIGTERM 15: termina processos, desejável ser usado no lugar do sigkill, pois encerra processos de forma planejada, desalocando todos os recursos de forma organizada e tem menos chance de problema.

SIGTOP 17: para o processo forçosamente, sem matá-lo.

SIGCONT 19: continua o processo parado.

Seu arquivo de configuração está em:

/~/.config/htop/htoprc

Outras alternativas para o htop são o btop e bpytop:

Press enter or click to view image in full size
Press enter or click to view image in full size

Mais manipulações de processos:

sleep

Pausar um processo.

sleep numero_pid

Listar pid de todos processo em sleep:

pgrep sleep

kill:

Vai indicar alguma interação com um processo, que não necessariamente é matar o processo, dependendo do sinal usado. Sintaxe:

kill -número_do_sinal pid

kill pid

kill pid (sem sinal manda sigterm 15 automático, ou seja, mata o processo de maneira não abrupta)

Press enter or click to view image in full size

Listar todos os sinais:

kill -l

Press enter or click to view image in full size

Mata processos que estejam dormindo:

kill $(pgrep sleep)

killall

Também usa por padrão sigterm 15, é usado com nome do processo ao invés de pid, útil para quando um programa tem vários processos executando, daí é melhor matá-lo pelo nome:

killall -flag nomedoprocesso

Press enter or click to view image in full size

pkill

Funciona como o killall:

pkill flag nomedoprocesso

fuser

Mostra processos que estão em execução e pertencem ao diretório especificado:

fuser -flag /diretório

Flags:

Press enter or click to view image in full size
Press enter or click to view image in full size

nice:

Chama um processo com uma prioridade especificada, sendo a prioridade padrão 20 e o nice padrão é 0. Quanto menor é o número da prioridade, maior é a prioridade, ou seja: número baixo= prioridade alta, número alto= prioridade baixa. A menor nice de todas é -20, portanto é a maior prioridade para os cores do processador. Já o maior número é 19, que é a menor prioridade.

Press enter or click to view image in full size

No htop, pode-se ver prioridades em 20, pois como já foi dito, a prioridade padrão é 20, se aparece 20, significa que o nice está em 0.

A prioridade é 20 + nice, então:

20 + (-20) = 0 é a maior prioridade.

20 + +19 = 39 é a menor prioridade.

Como usar nice para chamar um processo com uma prioridade específica, por exemplo:

sudo nice -n -numero_prioridade nome_do_processo

sudo nice -n +numero_prioridade nome_do_processo

Press enter or click to view image in full size
Press enter or click to view image in full size

Para colocar uma prioridade positiva não precisa usar o +, é optativo.

nice cria processo com uma determinada prioridade, já renice altera prioridade de um processo em execução.

renice:

Altera a prioridade de um processo já em execução, abaixando ou aumentando prioridade.

renice -numero_de_prioridade pid

renice +numero_de_prioridade pid

Press enter or click to view image in full size

Cabou.

--

--