Pular para o conteúdo

Linux para quem opera

Iniciante22 min de leiturafundamentos

Um processo tem PID, ambiente, arquivos abertos e limites. Operar Linux começa por observar antes de reiniciar: reiniciar apaga evidências e pode apenas deslocar a falha.

Janela do terminal
uptime # carga; compare com o número de CPUs
free -h # memória disponível e swap, não só "used"
df -hT; df -ih # espaço e inodes são problemas diferentes
ps -eo pid,ppid,%cpu,%mem,stat,cmd --sort=-%cpu | head
ss -lntp # portas em escuta e processo dono
journalctl -u minha-api --since '-15 min' --no-pager

Carga alta não prova CPU saturada: tarefas esperando I/O também entram no cálculo. Use top ou vmstat 1 e observe wa (I/O wait). Se df -h parece normal mas a aplicação não cria arquivos, confira inodes com df -ih. Antes de investigar memória, registre o timestamp e a unidade afetada para correlacionar com métricas e deploys.

Janela do terminal
systemctl status minha-api
systemctl show minha-api -p MainPID -p Restart -p MemoryCurrent
sudo systemctl reload minha-api # só se a unidade suporta reload
sudo systemctl restart minha-api

Leia a unidade com systemctl cat minha-api. ExecStart, User, EnvironmentFile, WorkingDirectory e Restart explicam grande parte dos incidentes. Não edite arquivos em /usr/lib/systemd/system: crie um override com systemctl edit minha-api, depois systemctl daemon-reload. Um restart bem-sucedido não é recuperação se a causa foi disco cheio, credencial expirada ou dependência indisponível.

Permissões são avaliadas para usuário, grupo e outros; chmod 644 arquivo permite leitura a todos, mas nunca é uma correção automática para Permission denied. Confirme o dono e cada diretório do caminho:

Janela do terminal
id; namei -l /srv/minha-api/dados.db
ls -l /srv/minha-api/dados.db
ulimit -n; cat /proc/$(pidof minha-api)/limits | grep 'open files'

Um processo pode ter capabilities, ACLs, SELinux/AppArmor ou limites de container além do chmod. Em produção, prefira uma conta de serviço sem shell e diretórios dedicados; não execute a aplicação como root para contornar acesso negado.

SIGTERM pede encerramento gracioso; SIGKILL não pode ser tratado. Teste se sua aplicação fecha conexões e grava estado antes do prazo do orquestrador. Para encontrar arquivos removidos que ainda ocupam espaço, use lsof +L1; para I/O, iostat -xz 1. Colete esses dados antes de qualquer ação irreversível.

Próximo passo: aplique o mesmo método ao caminho de uma requisição em Redes na prática. Em ambientes com container, relacione os limites vistos aqui a cgroups e aos limites do runtime.