Ubuntu Solução de Problemas

Aqui estão 30 problemas comuns, organizados pelo sintoma, ou seja, pelo que você vê na tela. Cada um mostra a mensagem real do Ubuntu 26.04, o que a causou, um comando para confirmar antes de mexer em qualquer coisa, a solução e a aula que explica o assunto a fundo.

O método que resolve quase tudo
  1. Leia a mensagem inteira. Ela quase sempre diz o problema: "Permissão negada", "inexistente", "não encontrado". Copie o texto exato; ele é ótimo para pesquisar.
  2. Confirme a causa com um comando que só olha (ls, systemctl status, journalctl, df). Não mude nada ainda.
  3. Mude uma coisa por vez e teste de novo. Se piorar, você sabe exatamente o que desfazer.

Índice de sintomas


Nível 1 · Iniciante

pgrep/ps não acha um programa que está aberto

O Chromium está aberto na sua frente, mas o terminal diz que não:

$ ps
    PID TTY          TIME CMD
   3001 pts/0    00:00:00 bash          « só os processos DESTE terminal
   3100 pts/0    00:00:00 ps
$ pgrep chromium
$ echo $?
1                                       « 1 = nada encontrado

Causa: são duas. O ps sem opções só mostra o que foi aberto neste terminal. E o pgrep procura no nome do processo, que nem sempre é o nome do app: o Chromium em snap roda um programa chamado chrome.

Como confirmar: procure na linha de comando inteira com -f e veja o nome real com -a:

$ pgrep -af chromium
2210 /snap/chromium/3554/usr/lib/chromium-browser/chrome --password-store
2251 /snap/chromium/3554/usr/lib/chromium-browser/chrome --type=renderer
$ pgrep -l chrome
2210 chrome                             « o nome que o pgrep enxerga
2251 chrome

Solução: use ps aux (todos os processos) ou pgrep -af parte-do-nome. Lembre também: maiúsculas importam (use -i para ignorar), e o nome curto tem no máximo 15 caracteres (gnome-text-editor vira gnome-text-edit). Aula: ps, pgrep, top.

Missão: nesta máquina fictícia o Chromium está aberto. Tente pgrep chromium e veja que nada aparece. Depois descubra o PID dele de outro jeito.

A interface travou

A tela congelou, o mouse não responde, ou responde muito devagar.

Causa: quase sempre um programa consumindo toda a memória ou CPU. Às vezes é o próprio GNOME.

Como confirmar: abra um terminal de texto fora da interface com Ctrl+Alt+F3, entre com usuário e senha e veja quem está pesando:

$ ps aux --sort=-%mem | head -4
$ top

Solução, do mais leve ao mais pesado:

  1. Encerre o culpado: pkill -f nome ou kill PID. Volte com Ctrl+Alt+F2.
  2. Reinicie só a sessão gráfica: sudo systemctl restart gdm (perde o que não foi salvo).
  3. Reinicie a máquina: sudo reboot.
  4. Se nem o TTY abre: segure Alt+SysRq e aperte, devagar, S, U, B.

Aula: Quando o Sistema Trava.

O terminal parou de responder

Você digita e nada acontece, ou aparece um > no lugar do prompt.

$ echo "Olá
>                                       « o bash espera você fechar as aspas
> 

Causa e solução:

O que apareceCausaSaída
Um > no começo da linhaAspas ou parênteses abertosFeche as aspas ou aperte Ctrl+C
Nada, nem o que você digitaVocê apertou Ctrl+S (congela a tela)Ctrl+Q
Cursor parado depois de um comandoO comando está rodando ou esperando entrada (ex.: cat sem arquivo)Ctrl+C cancela; Ctrl+D encerra a entrada
Tela com : embaixoVocê está dentro do less ou do manq
-- INSERT -- ou ~ na lateralVocê está no vimEsc, :q!, Enter

Aula: O Terminal e Atalhos de Teclado.

"Permissão negada" / "Permission denied"
$ ls /root
ls: não é possível abrir o diretório '/root': Permissão negada
$ touch /etc/teste.conf
touch: não é possível executor o touch em '/etc/teste.conf': Permission denied

Causa: seu usuário não tem a permissão necessária. Fora da sua pasta pessoal, quase tudo pertence ao root. Alguns comandos do 26.04 mostram a mensagem em inglês (Permission denied); outros, em português.

Como confirmar: veja o dono e as permissões do arquivo, e quem você é:

$ ls -ld /etc
drwxr-xr-x 140 root root 12288 Oct 15 08:02 /etc     « só o root (rwx) escreve
$ id
uid=1000(ana) gid=1000(ana) groups=1000(ana),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin)

Solução: se a ação é de administração (instalar, editar /etc), use sudo. Se o arquivo deveria ser seu, corrija o dono com chown. Nunca use chmod 777 como atalho. Aulas: Entendendo Permissões, sudo.

"comando não encontrado"
$ htop
Comando 'htop' não encontrado, mas poder ser instalado com:
sudo snap install htop  # version 3.4.1, or
sudo apt  install htop  # version 3.4.1-1
$ lss
lss: comando não encontrado

Causa: no primeiro caso, o programa não está instalado, e o Ubuntu sugere o pacote (o "poder" é um erro da tradução original). No segundo, é erro de digitação.

Como confirmar: type nome diz se o comando existe; echo $PATH mostra onde o shell procura.

Solução: instale com sudo apt install pacote, corrija a digitação (use Tab), ou rode programas da pasta atual com ./programa. As versões na sugestão variam. Aulas: apt, .bashrc, alias, PATH.

"Arquivo ou diretório inexistente"
$ cd documentos
bash: cd: documentos: Arquivo ou diretório inexistente
$ ls Área de trabalho
ls: não é possível acessar 'Área': Arquivo ou diretório inexistente
ls: não é possível acessar 'de': Arquivo ou diretório inexistente
ls: não é possível acessar 'trabalho': Arquivo ou diretório inexistente

Causa: o nome não existe exatamente assim, onde você está. As três causas campeãs: maiúsculas (documentos ≠ Documentos), espaços sem aspas e estar em outra pasta.

Como confirmar: pwd mostra onde você está; ls mostra os nomes exatos.

Solução: use Tab para completar nomes (ele acerta maiúsculas e espaços) e aspas em nomes com espaço: ls "Área de trabalho". Aula: Caminhos.

A senha não aparece quando digito
$ sudo apt update
[sudo: authenticate] Senha:             « você digita e nada aparece: é normal

Causa: não é defeito. O terminal esconde a senha por segurança, sem nem mostrar asteriscos.

Solução: digite a senha normalmente e aperte Enter. Se errou, apague tudo com Ctrl+U e digite de novo. Aula: sudo.

"I'm sorry … I'm afraid I can't do that" no sudo
$ sudo apt update
[sudo: authenticate] Senha:
sudo: I'm sorry joao. I'm afraid I can't do that

Causa: o usuário não está no grupo sudo, então não pode administrar a máquina. A mensagem vem do sudo-rs, em inglês.

Como confirmar: groups não mostra sudo na lista.

Solução: um administrador roda sudo usermod -aG sudo joao, e o joao sai e entra de novo na sessão. Se não há mais nenhum administrador, use o modo de recuperação. Aulas: Usuários e Grupos, Recuperar um Sistema.

apt: "Não foi possível obter a trava"
$ sudo apt install htop
Erro: Não foi possível obter a trava /var/lib/dpkg/lock-frontend. Ela está sendo mantida pelo processo 2147 (unattended-upgr)

Causa: outro programa está instalando pacotes agora. Na maioria das vezes são as atualizações automáticas (unattended-upgr), logo depois de ligar a máquina.

Como confirmar: ps -p 2147 -o pid,etime,cmd mostra o processo e há quanto tempo ele roda.

Solução: espere alguns minutos e tente de novo. Não apague os arquivos de trava: isso pode corromper a instalação que está em andamento. Sem sudo, a mensagem é outra: "você é root?". Aula: apt.

apt: "Não é possível encontrar o pacote"
$ sudo apt install vscode
Erro: Não é possível encontrar o pacote vscode

Causa: não existe pacote com esse nome nos repositórios configurados, ou a lista de pacotes está desatualizada.

Como confirmar: apt search termo procura o nome certo; snap find termo procura nos snaps.

Solução: rode sudo apt update e procure o nome correto. Alguns programas só existem como snap (ex.: sudo snap install code --classic) ou num repositório extra. Aulas: apt, Snap, Repositórios e PPAs.

"dpkg foi interrompido"
$ sudo apt upgrade
Erro: dpkg foi interrompido, você deve executar manualmente 'sudo dpkg --configure -a' para corrigir o problema.

Causa: uma instalação anterior parou no meio (máquina desligada, terminal fechado).

Solução: faça exatamente o que a mensagem pede, e depois complete as dependências:

$ sudo dpkg --configure -a
$ sudo apt install -f
$ sudo apt upgrade

Aula: dpkg e .deb.

"Não há espaço disponível no dispositivo"
$ cp video.mp4 ~/Vídeos/
cp: erro de escrita de '/home/ana/Vídeos/video.mp4': Não há espaço disponível no dispositivo

Causa: a partição encheu. Alguns comandos mostram em inglês: No space left on device.

Como confirmar: veja qual partição está cheia e depois quem está ocupando:

$ df -h /
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/nvme0n1p2  468G  468G     0 100% /                « cheio
$ du -h -d 1 ~ 2>/dev/null | sort -h | tail -5

Solução: apague ou mova o que for grande e inútil (Downloads, vídeos), limpe pacotes com sudo apt autoremove e sudo apt clean, e logs antigos com sudo journalctl --vacuum-time=2weeks. Aulas: lsblk, df, du, Manutenção.

Esqueci a minha senha

Você não consegue entrar, nem usar o sudo.

Causa: sem a senha, só o root pode trocá-la, e no Ubuntu o root não tem senha. O caminho é o modo de recuperação.

Solução:

  1. Reinicie e segure Shift (ou aperte Esc) para ver o menu do GRUB.
  2. Escolha Advanced options for Ubuntu e depois a linha com (recovery mode).
  3. No menu, escolha root (shell de root).
  4. Libere a escrita e troque a senha:
#> mount -o remount,rw /
#> passwd ana
#> reboot

Aula: Recuperar um Sistema.


Nível 2 · Intermediário

./script.sh: Permissão negada
$ ./backup.sh
bash: ./backup.sh: Permissão negada
$ echo $?
126                                     « achou o arquivo, mas não pôde executar
$ ls -l backup.sh
-rw-rw-r-- 1 ana ana 45 Oct 15 09:15 backup.sh   « não tem nenhum x

Causa: o arquivo não tem permissão de execução.

Solução: chmod +x backup.sh e rode de novo. Outra forma, sem mudar permissão: bash backup.sh. Aulas: chmod, Primeiro Script.

Sem internet / "Falha temporária na resolução de nome"
$ ping -c 2 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=14.2 ms   « por IP funciona
$ ping -c 2 google.com
ping: google.com: Nome ou serviço desconhecido          « por nome não: é o DNS

Causa: se nem o IP responde, o problema é a conexão (cabo, Wi-Fi, roteador). Se o IP responde e o nome não, o problema é o DNS.

Como confirmar, em ordem:

$ ip -br a                  # tenho IP?
$ ip r                      # tenho gateway (linha "default")?
$ ping -c 2 192.168.0.1     # o roteador responde?
$ resolvectl status         # qual DNS estou usando?

Solução: reconecte o Wi-Fi ou o cabo; reinicie o roteador; se for só o DNS, configure outro servidor (ex.: 1.1.1.1) em Configurações ou com nmcli. Aulas: Conceitos de Rede, Configurar a Rede.

O Wi-Fi não aparece, não liga ou não conecta
$ nmcli radio
WIFI-HW     WIFI          WWAN-HW  WWAN
habilitado  desabilitado  missing  habilitado     « Wi-Fi desligado

Causa: são três problemas diferentes. Não liga: o rádio está bloqueado (por software, ou por uma chave/tecla). Não aparece: falta driver ou firmware para a placa. Não conecta: senha errada ou conexão salva com a senha antiga.

Como confirmar, em ordem:

$ rfkill                    # Wi-Fi bloqueado? (soft ou hard)
$ ip -br link               # existe uma placa wl…?
$ lspci -k                  # a placa interna tem "Kernel driver in use"?
$ nmcli device wifi list    # a rede aparece?

Solução: bloqueio soft: rfkill unblock wifi; hard: chave, tecla Fn ou BIOS. Sem driver: Drivers Adicionais ou sudo ubuntu-drivers install. Senha: esqueça a rede e conecte de novo. Enquanto isso, use a internet do celular pelo cabo USB. Aulas: Wi-Fi, Wi-Fi que Não Funciona, Celular e Modem 4G.

SSH: "Connection refused"
$ ssh ana@192.168.0.50
ssh: connect to host 192.168.0.50 port 22: Connection refused

Causa: a máquina respondeu, mas nada está escutando na porta 22: o servidor SSH não está instalado, está parado ou usa outra porta.

Como confirmar, no servidor: systemctl status ssh e sudo ss -tlnp | grep ssh.

Solução: sudo apt install openssh-server; se usa outra porta, conecte com ssh -p PORTA. Aula: SSH.

SSH: "Connection timed out"
$ ssh ana@192.168.0.50
ssh: connect to host 192.168.0.50 port 22: Connection timed out

Causa: ninguém respondeu: IP errado, máquina desligada, outra rede, ou um firewall descartando a conexão.

Como confirmar: ping 192.168.0.50 e, no servidor, sudo ufw status.

Solução: confira o IP com ip -br a no servidor e libere o SSH no firewall: sudo ufw allow ssh. Aulas: SSH, Firewall (ufw).

SSH: "Permission denied (publickey)"
$ ssh ana@192.168.0.50
ana@192.168.0.50: Permission denied (publickey).

Causa: o servidor só aceita chaves, e a sua chave não está no ~/.ssh/authorized_keys dele (ou as permissões dessa pasta estão abertas demais).

Como confirmar: ssh -v ana@192.168.0.50 mostra quais chaves foram oferecidas.

Solução: instale a chave (ssh-copy-id, enquanto ainda há outra forma de acesso) e confira no servidor: chmod 700 ~/.ssh e chmod 600 ~/.ssh/authorized_keys. Aula: SSH.

SSH: "REMOTE HOST IDENTIFICATION HAS CHANGED"
$ ssh ana@192.168.0.50
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Causa: a "impressão digital" do servidor mudou desde a última conexão. Isso é normal se você reinstalou a máquina ou o IP passou a ser de outra. Se não fez nada disso, pode ser um ataque.

Solução: só se você sabe por que mudou, apague a impressão antiga e conecte de novo: ssh-keygen -R 192.168.0.50. Aula: SSH.

Um serviço não sobe
$ sudo systemctl restart nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

Causa: quase sempre um erro de configuração, uma porta ocupada ou um caminho errado no ExecStart (o código status=203/EXEC significa "não consegui executar o programa").

Como confirmar: a própria mensagem diz onde olhar:

$ systemctl status nginx
$ journalctl -u nginx -n 20 --no-pager
$ sudo nginx -t                         # muitos programas têm um teste de configuração

Solução: corrija a linha que o log aponta e rode sudo systemctl restart de novo. Se você editou um arquivo .service, rode antes sudo systemctl daemon-reload. Aulas: systemctl, Logs (journalctl), Criar um Serviço.

O cron não roda o meu script

No terminal o script funciona, mas no horário marcado nada acontece.

Causa: o cron roda com um ambiente mínimo: o PATH é curto, não há ~/.bashrc e a pasta de trabalho é a home. Comandos sem caminho completo e caminhos relativos falham em silêncio.

Como confirmar: veja se o cron tentou rodar e guarde a saída num log:

$ grep CRON /var/log/syslog | tail -3
$ crontab -l

Solução: use caminhos absolutos (/home/ana/bin/backup.sh), dê chmod +x ao script, e mande a saída para um arquivo: … >> /home/ana/backup.log 2>&1. Aula: Agendar Tarefas (cron).

O sistema está lento

Causa: uma de quatro coisas está no limite: CPU, memória, disco ou rede.

Como confirmar: compare a carga com o número de CPUs e veja a memória:

$ uptime
 10:30:00 up  2:31,  1 user,  load average: 6,12, 3,40, 1,95
$ nproc
8                                       « carga 6 com 8 CPUs: alta, mas ainda cabe
$ free -h
$ top                                   # P ordena por CPU, M por memória

Solução: encerre o processo que pesa; se a memória acaba sempre, feche abas ou aumente a swap; se o problema é o disco, veja o próximo item. Aula: Desempenho e Monitoramento.

O disco está lento ou fazendo barulho

Causa: algum processo lendo ou gravando muito, disco quase cheio, ou um disco começando a falhar.

Como confirmar:

$ iostat -x 2 3              # %util perto de 100 = disco no limite (pacote sysstat)
$ sudo iotop -o              # quem está usando o disco agora
$ sudo smartctl -H /dev/sda  # saúde do disco (pacote smartmontools)

Solução: encerre o processo responsável; libere espaço; se o SMART indicar falha, faça backup imediatamente e troque o disco. Aulas: Desempenho e Monitoramento, Backup.


Nível 3 · Avançado

"Read-only file system"
#> touch /teste
touch: cannot touch '/teste': Read-only file system

Causa: a partição está montada só para leitura. No modo de recuperação isso é proposital. Fora dele, o kernel faz isso sozinho quando detecta erros no disco, para não piorar o estrago.

Como confirmar: findmnt / mostra ro nas opções; dmesg -T | tail mostra erros de disco, se houver.

Solução: no recovery, mount -o remount,rw /. Se foi por erro de disco, faça backup e rode fsck com a partição desmontada (a partir de um pendrive). Aula: Recuperar um Sistema.

O boot para no "emergency mode" (fstab errado)
You are in emergency mode. After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, or "exit" to boot into default mode.
Cannot open access to console, the root account is locked.

Causa: uma linha do /etc/fstab aponta para um disco que não existe (UUID errado, disco removido) ou tem erro de digitação.

Solução: entre no modo de recuperação (shell de root), libere a escrita e corrija o fstab:

#> mount -o remount,rw /
#> nano /etc/fstab
#> findmnt --verify
#> reboot

Para discos que nem sempre estão ligados, use a opção nofail, e sempre teste com sudo findmnt --verify e sudo mount -a antes de reiniciar. Aulas: mount e fstab, Recuperar um Sistema.

Tela preta depois de uma atualização

Causa: geralmente um kernel novo ou um driver de vídeo que não se deu bem com o hardware.

Solução:

  1. Tente um TTY (Ctrl+Alt+F3). Se ele abre, o problema é só gráfico: veja journalctl -b -p err.
  2. Reinicie, abra o menu do GRUB (Shift ou Esc) e, em Advanced options for Ubuntu, escolha o kernel anterior.
  3. Se funcionar, o culpado é o kernel novo: mantenha o anterior até sair uma correção.
  4. Para testar sem driver de vídeo, no GRUB aperte e e acrescente nomodeset à linha linux (vale só para esse boot).

Aula: Boot, GRUB e Kernel.

"Address already in use" (porta em uso)
$ journalctl -u nginx -n 1 --no-pager
Oct 15 14:10:22 servidor nginx[3112]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

Causa: outro programa já ocupa a porta (outro servidor web, um container, uma cópia antiga do mesmo serviço).

Como confirmar: veja quem está escutando:

$ sudo ss -tlnp | grep ':80 '

Solução: pare o outro programa (sudo systemctl stop apache2, docker stop nome) ou mude a porta de um dos dois. Aulas: ip, ping, ss, Servidor Web (nginx).

nginx: "502 Bad Gateway"
$ curl -I -H "Host: app.local" http://localhost
HTTP/1.1 502 Bad Gateway
$ sudo tail -1 /var/log/nginx/error.log
2026/10/15 13:55:02 [error] 2210#2210: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: app.local, request: "HEAD / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "app.local"

Causa: o nginx funciona, mas a aplicação por trás dele (o "upstream", aqui na porta 3000) está parada ou em outra porta.

Solução: suba a aplicação (systemctl status app, docker ps) e confira se a porta do proxy_pass é a mesma em que ela escuta (ss -tlnp). Aula: Servidor Web (nginx).

Docker: "permission denied … docker.sock"
$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/containers/json": dial unix /var/run/docker.sock: connect: permission denied

Causa: seu usuário não está no grupo docker, que dá acesso ao serviço do Docker.

Solução: sudo usermod -aG docker $USER, depois saia e entre na sessão (ou rode newgrp docker). Atenção: quem está no grupo docker tem, na prática, poder de root. Aula: Docker.

Perdi o acesso SSH depois de ligar o firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema

Causa: o ufw bloqueia toda entrada por padrão. Se o SSH não foi liberado antes, a próxima conexão é recusada.

Solução: você precisa de outro acesso: o console do provedor de nuvem, o teclado do servidor ou, numa VM, a janela dela. Lá, rode sudo ufw allow OpenSSH (ou sudo ufw allow 22/tcp). Da próxima vez, libere o SSH antes de ufw enable. Aulas: Firewall (ufw), Segurança do Servidor.


Exercícios

1. ping 8.8.8.8 responde, mas ping ubuntu.com dá "Nome ou serviço desconhecido". Onde está o problema?

2. O apt diz que a trava está com o processo unattended-upgr. O que fazer?

3. ./script.sh devolve "Permissão negada" e echo $? mostra 126. Qual é a correção mais direta?