Dicionario de Mensagens de Erro do Linux: Erros Comuns, Causas e Solucoes

Dicionario de Mensagens de Erro do Linux: Erros Comuns, Causas e Solucoes

Como Usar Este Dicionario

Cada titulo e a string literal do erro. Pressione Ctrl+F, busque o texto mostrado no seu terminal, depois leia a "Causa", "Diagnostico" e "Solucao" da secao correspondente de cima para baixo para a recuperacao mais rapida.

Regras universais

  • Leia a primeira linha do erro, nao apenas a ultima (a causa raiz geralmente e impressa primeiro)
  • Nao adicione sudo por palpite. Diagnostique a causa primeiro
  • Sempre isole tres coisas em ordem: qual comando / qual arquivo / qual permissao

Premissas (ambiente alvo)

  • SO: distribuicoes comuns (Ubuntu / Debian / familia RHEL)
  • Shell: bash (zsh se comporta da mesma forma na maioria dos casos)
  • Operando como usuario regular

O que significa "command not found"?

O shell nao consegue localizar um executavel com esse nome no PATH. A causa e quase sempre um erro de digitacao, um pacote faltando ou um PATH mal configurado.

bash: dokcer: command not found

Diagnostico:

command -v docker      # imprime o caminho real se esta no PATH
which docker           # mesma ideia (comando externo)
echo "$PATH"           # o diretorio esperado esta incluido?
type docker            # alias / funcao / binario real?

Solucao:

  • Erro de digitacao: o exemplo acima e dokcer; o nome correto e docker
  • Nao instalado: sudo apt install <package> (familia RHEL: dnf install)
  • PATH faltando: o binario existe mas nao e encontrado. Adicione export PATH="$PATH:/usr/local/bin" ao ~/.bashrc
  • So falha com sudo: sudo usa secure_path, um PATH diferente. Use o caminho completo ou sudo env "PATH=$PATH" cmd

Se "not found" persistir logo apos a instalacao, o shell armazenou o local do comando em cache. Limpe com hash -r.

Veja Corrigindo Erros "command not found" para detalhes.

Por que "Permission denied" aparece?

O usuario em execucao nao tem a permissao necessaria (leitura/escrita/execucao) no alvo. A causa e permissoes de arquivo, propriedade, um bit de execucao de diretorio faltando ou SELinux/AppArmor.

bash: ./deploy.sh: Permission denied
-bash: /var/log/app.log: Permission denied

Diagnostico:

ls -l deploy.sh        # o bit de execucao esta definido? quem e o dono?
ls -ld /var/log        # permissoes do diretorio pai
whoami                 # seu nome de usuario
id                     # seus grupos

Solucao:

  • Script nao executa: chmod +x deploy.sh
  • Nao consegue escrever no arquivo: se voce e o dono, chmod u+w file; se e de outro dono, use sudo ou sudo chown $USER file
  • Nao consegue entrar em um diretorio: um diretorio precisa do bit de execucao x. chmod +x dir
  • Areas do sistema (/etc, /var/log): faca alteracoes de configuracao via sudo

Aplicar chmod 777 em tudo para "simplesmente funcionar" causa incidentes. Mantenha o privilegio minimo (arquivos 644/755, diretorios 755).

Veja Solucao para Permission Denied para detalhes.

O real significado de "No such file or directory"

O caminho nao existe, ou um diretorio intermediario esta faltando. Tambem aparece com links simbolicos quebrados, caminhos relativos mal lidos e uma linha de interpretador errada (shebang).

cat: config.yml: No such file or directory
bash: ./run.sh: /bin/bash^M: bad interpreter: No such file or directory

Diagnostico:

pwd                    # onde estou agora?
ls -la                 # o arquivo realmente existe (incluindo ocultos)?
file run.sh            # verificar terminacoes de linha CRLF
readlink -f link       # alvo final de um link simbolico

Solucao:

  • Caminho relativo mal lido: se cat ./config.yml falha, verifique o caminho absoluto cat /etc/app/config.yml
  • "not found" no shebang: um ^M final significa terminacoes de linha Windows (CRLF). Remova-as: sed -i 's/\r$//' run.sh
  • Caminho errado no shebang: #!/bin/bash vs /usr/bin/bash. Confirme o caminho real com which bash
  • Link simbolico quebrado: se ls -l mostra o alvo em vermelho, o destino sumiu. Recrie o link

Como investigar "No space left on device"

O sistema de arquivos alvo nao tem espaco livre. A armadilha: a mesma mensagem aparece na exaustao de inodes (grande numero de arquivos pequenos), nao apenas ao ficar sem blocos de dados.

cp: error writing 'backup.tar': No space left on device

Diagnostico:

df -h                  # uso de espaco (Use%)
df -i                  # uso de inodes (IUse%) -- facil de ignorar
du -sh /var/* 2>/dev/null | sort -h   # o que e grande?

Solucao:

  • Exaustao de blocos: apague logs enormes e arquivos antigos. Compacte logs com journalctl --vacuum-size=200M
  • Exaustao de inodes: se df -i mostra 100%, voce nao pode escrever mesmo com espaco livre. Remova arquivos pequenos desnecessarios (caches, sessoes)
  • Apagado mas espaco nao recuperado: um processo ainda mantem o arquivo aberto. Encontre-o com lsof +L1 e reinicie o processo

Mesmo logo apos rm, o espaco nao e liberado enquanto um processo ainda mantiver o arquivo aberto. df nao vai diminuir ate o servico reiniciar.

Veja Investigando "No Space Left on Device" para detalhes.

"Connection refused" vs "timed out"

Connection refused significa que o pacote chegou ao host mas a porta rejeitou (servico inativo ou porta errada). Connection timed out significa nenhuma resposta voltou (rota, firewall ou host inativo). Essa distincao e o ponto de partida do diagnostico.

ssh: connect to host 10.0.0.5 port 22: Connection refused
curl: (28) Failed to connect to api.example.com port 443: Connection timed out

Diagnostico:

ping -c3 10.0.0.5                    # o host e alcancavel?
nc -vz 10.0.0.5 22                   # a porta esta aberta?
ss -tlnp | grep :22                  # o servico esta LISTENING no servidor?

Solucao:

  • refused: confirme que o servico esta executando, systemctl status sshd. Verifique tambem se o numero da porta esta errado
  • timed out: verifique regras de firewall/security group, a rota (traceroute) e se o host esta vivo
  • resolucao de nomes falha: Could not resolve host e um problema de DNS. Verifique /etc/resolv.conf e getent hosts <name>

Veja Solucao de Problemas de Conexao SSH e Basico de Comandos de Rede para detalhes.

Corrigindo "Address already in use"

A porta que seu processo quer ja esta ocupada por outro processo. Causas comuns: um processo remanescente de uma execucao anterior, inicio duplo ou um socket TIME_WAIT persistente.

Error: listen EADDRINUSE: address already in use :::3000
bind: Address already in use

Diagnostico:

ss -tlnp | grep :3000      # qual PID segura a porta
lsof -i :3000              # o mesmo, com nome do processo

Solucao:

  • Parar o processo remanescente: kill <PID>; se ele ignorar, kill -9 <PID>
  • Inicio duplo: verifique se o systemd ou um gerenciador de processos (pm2, etc.) o iniciou mais de uma vez
  • Nao consegue religar devido a TIME_WAIT: habilite SO_REUSEADDR no app, ou espere algumas dezenas de segundos

Quando voce ve "Killed" / Out of memory

A maioria das mensagens Killed vem do OOM killer encerrando um processo sob pressao de memoria. Mesmo quando o log do app nao tem rastro, o log do kernel registra.

$ ./train.py
Killed

Diagnostico:

dmesg -T | grep -i -E 'oom|killed process'   # evidencia de OOM
journalctl -k | grep -i oom                  # ambiente systemd
free -h                                       # memoria / swap atual

Solucao:

  • Sem memoria fisica: reduza o batch size, pare processos desnecessarios, adicione swap
  • Um processo inchou: encontre o consumidor de memoria com ps aux --sort=-%mem | head
  • Limite de container: verifique se voce atingiu o limite --memory e revise-o

Um Killed sem OOM pode ser um kill manual ou um killer de timeout. Se dmesg nao tem registro de OOM, suspeite desses.

bad interpreter / Exec format error

O kernel nao consegue iniciar o executavel. A causa e um shebang errado, contaminacao CRLF ou incompatibilidade de arquitetura (ex: executar um binario ARM em x86).

./run.sh: /bin/sh^M: bad interpreter: No such file or directory
./app: cannot execute binary file: Exec format error

Diagnostico:

head -1 run.sh         # examinar a linha do shebang
file app               # arquitetura do binario (x86-64 / ARM aarch64)
uname -m               # arquitetura do host em execucao

Solucao:

  • ^M final: remova CRLF, sed -i 's/\r$//' run.sh
  • Caminho errado no shebang: confirme o caminho real com which e corrija
  • Incompatibilidade de arquitetura: recompile para o host; para execucao cruzada considere qemu-user

Primeiros passos em "segmentation fault (core dumped)"

O processo acessou memoria invalida e o SO o encerrou. Geralmente um bug da aplicacao, mas uma biblioteca compartilhada corrompida ou incompatibilidade de versao tambem pode causar.

Segmentation fault (core dumped)

Diagnostico:

dmesg -T | tail                       # o endereco do segfault
ldd /path/to/app                      # resolucao de biblioteca compartilhada (alguma "not found"?)
ulimit -c                             # geracao de core dump esta permitida?

Solucao:

  • Incompatibilidade de biblioteca: se ldd mostra not found, reinstale a biblioteca
  • Bug reproduzivel: execute com ulimit -c unlimited, depois gdb <app> <core> e obtenha bt (backtrace)
  • Logo apos uma atualizacao: verifique a consistencia de dependencias (apt install --reinstall <pkg>)

Veja Basico de Gerenciamento de Pacotes para detalhes.

Tabela de Referencia de Erros

Mensagem Causa principal Primeiro comando
command not found nao instalado / PATH command -v cmd
Permission denied permissao / dono ls -l target
No such file or directory caminho errado / CRLF ls -la / file f
No space left on device espaco / exaustao inodes df -h / df -i
Connection refused servico inativo ss -tlnp
Connection timed out rota / firewall nc -vz host port
Address already in use porta em uso lsof -i :PORT
Killed OOM dmesg -T | grep -i oom
Exec format error incompatibilidade de arq file app
Segmentation fault app / biblioteca ldd app

O que nao fazer

  • Adicionar sudo sem ler a mensagem
  • Enterrar problemas de permissao com chmod 777
  • Verificar apenas df e nunca df -i (inodes)
  • Julgar Killed apenas pelo log do app (nunca verificando o log do kernel)

Proximas Leituras