Processos
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.
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.
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.
Control Z:
Pode pausar um processo em execução.
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)
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
Exibe os processos do usuário atual (com o $USER):
ps -u $USER
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
pstree (necessário instalar pstree e psmisc)
Mostra os processos hierarquizados em árvore.
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.
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.
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:
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:
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)
Listar todos os sinais:
kill -l
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
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:
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.
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
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
Cabou.










