Ubuntu Manutenção

Um Ubuntu bem cuidado pede poucos minutos por semana: atualizar, limpar o que sobrou, conferir o espaço em disco e ver se algum serviço falhou. Esta aula junta tudo numa rotina, explica o que cada comando realmente faz e termina com um script que gera o relatório de saúde da máquina.

Você vai aprender
  • O que o Ubuntu já faz sozinho (e o que fica por sua conta).
  • A atualizar e a saber se a máquina precisa reiniciar.
  • A liberar espaço com segurança: pacotes órfãos, cache, logs e snaps antigos.
  • A achar serviços com falha e a testar backups.
  • A automatizar um relatório de manutenção.

Antes do comando: o que já é automático

O Ubuntu tem várias tarefas de manutenção agendadas por timers do systemd (veja Agendar Tarefas). Você pode vê-las:

$ systemctl list-timers --no-pager | grep -E "apt|logrotate|fstrim|e2scrub"
Thu 2026-10-15 21:06:42 -03  1h 44min Tue 2026-10-13 11:17:01 -03  - apt-daily.timer          apt-daily.service          « baixa a lista de pacotes
Fri 2026-10-16 00:41:11 -03  5h 19min Thu 2026-10-15 13:20:04 -03  - logrotate.timer          logrotate.service          « gira os logs
Fri 2026-10-16 06:37:29 -03       11h Thu 2026-10-15 13:14:16 -03  - apt-daily-upgrade.timer  apt-daily-upgrade.service  « instala correções de segurança
Sun 2026-10-18 03:10:50 -03    2 days Sun 2026-10-11 11:39:25 -03  - e2scrub_all.timer        e2scrub_all.service        « verifica sistemas de arquivos
Mon 2026-10-19 00:26:10 -03    3 days Tue 2026-10-13 11:29:52 -03  - fstrim.timer             fstrim.service             « otimiza SSDs

A primeira coluna é a próxima execução; a terceira, a última. Ou seja: as correções de segurança já são instaladas sozinhas pelo unattended-upgrades, e os snaps se atualizam sozinhos. O que fica com você é o resto das atualizações, a limpeza, o espaço em disco, os serviços com falha e os backups.

$ cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";             « atualiza a lista todo dia
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "1";               « instala as correções de segurança

A rotina em uma tabela

FrequênciaTarefaComando
SemanalAtualizar pacotessudo apt update && sudo apt upgrade
SemanalAtualizar flatpaksflatpak update
SemanalVer se precisa reiniciarcat /var/run/reboot-required
SemanalEspaço em discodf -h
SemanalServiços com falhasystemctl --failed
MensalRemover pacotes e kernels sem usosudo apt autoremove
MensalLimpar o cache do aptsudo apt clean
MensalLimitar o tamanho dos logssudo journalctl --vacuum-time=4weeks
MensalErros no logjournalctl -p err -b
MensalTestar a restauração do backupRestaurar um arquivo e abri-lo
A cada 2 anosNova versão LTSsudo do-release-upgrade

1. Atualizar o sistema

São dois passos, e eles fazem coisas diferentes:

sudo apt update
Baixa a lista de versões novas. Não instala nada.
&&
Só roda o próximo comando se o anterior deu certo (código 0).
sudo apt upgrade
Instala as versões novas dos pacotes que você já tem.
$ sudo apt update
[sudo: authenticate] Senha:
Atingido:1 http://br.archive.ubuntu.com/ubuntu resolute InRelease
Obter:2 http://security.ubuntu.com/ubuntu resolute-security InRelease [126 kB]
…
12 pacotes podem ser atualizados. Execute 'apt list --upgradable' para vê-los.
$ apt list --upgradable
Listando...
mesa-opencl-icd/resolute-updates 26.0.8-1ubuntu0.3 amd64 [atualizável de: 26.0.7-1ubuntu0.2]
…
$ sudo apt upgrade

O apt list --upgradable mostra o pacote, o repositório de onde vem (resolute-updates), a versão nova e, entre colchetes, a atual. Detalhes em apt e Atualizações. Programas em snap e flatpak não passam pelo apt:

$ sudo snap refresh                                   « opcional: o snap já se atualiza sozinho
$ flatpak update

2. Precisa reiniciar?

Algumas atualizações, como as do kernel, só valem depois de reiniciar. Quando isso acontece, o Ubuntu cria o arquivo /var/run/reboot-required. Ver se o arquivo existe responde a pergunta:

$ cat /var/run/reboot-required
*** System restart required ***                      « sim, precisa
$ cat /var/run/reboot-required.pkgs
linux-image-7.0.0-39-generic                         « por causa do kernel novo
linux-base

E quando não precisa:

$ cat /var/run/reboot-required
cat: /var/run/reboot-required: No such file or directory
$ echo $?
1

Repare que "arquivo não existe" aqui é a boa notícia. Em scripts, teste com [ -f /var/run/reboot-required ] (veja Condicionais). No desktop, o Ubuntu avisa com uma notificação.


3. Limpar o que sobrou

Pacotes órfãos e kernels antigos: apt autoremove

Quando você instala um programa, o apt instala junto as dependências. Se você remove o programa, elas ficam para trás. O autoremove apaga essas sobras, inclusive kernels antigos (o Ubuntu mantém o atual e o anterior).

$ sudo apt autoremove
…
REMOVENDO:
  linux-headers-7.0.0-34  linux-headers-7.0.0-34-generic  linux-image-7.0.0-34-generic
  linux-modules-7.0.0-34-generic

Resumo:
  Atualizando: 0, Instalando: 0, Removendo: 4, Não atualizando: 0
…                                                     « o apt pergunta se deve continuar
Leia a lista antes de confirmar

Se aparecer um pacote que você usa, responda n e marque-o como instalado à mão: sudo apt-mark manual nome-do-pacote. Assim o autoremove passa a ignorá-lo.

Cache de pacotes: apt clean

Os .deb baixados ficam guardados em /var/cache/apt/archives. Depois de instalados, não servem mais para nada:

ComandoO que remove
sudo apt cleanTodo o cache de pacotes baixados
sudo apt autocleanSó os pacotes em cache que nem existem mais no repositório
sudo apt autoremove --purgePacotes órfãos e também os arquivos de configuração deles
flatpak uninstall --unusedRuntimes do flatpak que nenhum app usa

Revisões antigas de snap

O snap guarda versões anteriores de cada programa para permitir voltar atrás (snap revert). Elas aparecem como disabled:

$ snap list --all | grep disabled
chromium   152.0.7977.64   3520   latest/stable   canonical**   disabled      « versão anterior
core20     20260410        2866   latest/stable   canonical**   base,disabled
$ sudo snap set system refresh.retain=2                « guardar só 2 versões de cada

Logs: journalctl --vacuum

sudo journalctl
A ferramenta de logs do systemd.
--vacuum-time=4weeks
"Aspira" (vacuum): apaga os logs arquivados com mais de 4 semanas.
$ journalctl --disk-usage
Archived and active journals take up 535.8M in the file system.
$ sudo journalctl --vacuum-time=4weeks
Vacuuming done, freed 312.0M of archived journals from /var/log/journal/4b1f0c6e9a2d4c7f8e3a5b6c7d8e9f01.
$ sudo journalctl --vacuum-size=200M                   « outra forma: limite por tamanho

Para um limite permanente, crie /etc/systemd/journald.conf.d/tamanho.conf:

[Journal]
SystemMaxUse=500M

E aplique com sudo systemctl restart systemd-journald. Mais em Logs (journalctl).


4. O que está enchendo o disco?

Vá do geral para o específico: primeiro qual partição, depois qual pasta, depois qual arquivo.

$ df -h /
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/nvme0n1p2  468G  421G   23G  95% /                « 95%: hora de investigar
$ sudo du -h -d 1 /var 2>/dev/null | sort -h | tail -5
212M	/var/cache
538M	/var/log
5,1G	/var/lib
38G	/var/lib/docker                                  « o culpado
45G	/var
$ find ~ -type f -size +1G -exec ls -lh {} +
-rw-rw-r-- 1 ana ana 5,9G Oct 10 21:14 /home/ana/Downloads/ubuntu-26.04-desktop-amd64.iso

O 2>/dev/null esconde avisos de pastas que o du não consegue ler. Lugares que costumam crescer:

  • /var/log e o journal: limite como acima.
  • /var/cache/apt: sudo apt clean.
  • /var/lib/snapd: revisões antigas de snap.
  • /var/lib/docker: docker system prune (veja Docker).
  • ~/.cache e a lixeira, ~/.local/share/Trash.
Visual é mais rápido

O ncdu (sudo apt install ncdu) mostra o uso de disco de forma interativa: navegue com as setas e apague com d. No desktop, o app Analisador de uso de disco faz o mesmo com gráficos.


5. Serviços com falha e erros

$ systemctl --failed
  UNIT          LOAD   ACTIVE SUB    DESCRIPTION
● nginx.service loaded failed failed A high performance web server and a reverse proxy server

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.

1 loaded units listed.

Para investigar, veja o status e as últimas linhas de log do serviço:

$ systemctl status nginx
$ journalctl -u nginx -n 30 --no-pager

Para ver todos os erros desde o último boot, use journalctl -p err -b. Detalhes em systemctl.


6. Backups

Backup que nunca foi testado não é backup. Uma vez por mês:

  1. Confira a data do último backup: ls -lt /media/ana/HD/backup | head -3.
  2. Restaure um arquivo qualquer para uma pasta temporária e abra-o.
  3. Confira o log da tarefa agendada (veja cron).

Como montar a rotina de backup está em Backup e no projeto Backup Automático.


Automatizando: relatório de saúde

Este script junta as verificações num relatório. Ele não muda nada no sistema, só olha. Salve em /usr/local/sbin/saude:

#!/usr/bin/env bash
# Relatório rápido de saúde da máquina (só leitura)

echo "== $(hostname) — $(date '+%d/%m/%Y %H:%M') =="

echo; echo "-- Disco"
df -h / /home 2>/dev/null

echo; echo "-- Atualizações pendentes"
apt list --upgradable 2>/dev/null | tail -n +2 | wc -l

echo; echo "-- Reinício pendente"
if [ -f /var/run/reboot-required ]; then echo "SIM"; else echo "não"; fi

echo; echo "-- Serviços com falha"
systemctl --failed --no-legend

echo; echo "-- Logs ocupam"
journalctl --disk-usage

O tail -n +2 pula a primeira linha ("Listando...") e o wc -l conta o resto. Torne executável e rode:

$ sudo chmod +x /usr/local/sbin/saude
$ sudo saude
== notebook — 15/10/2026 10:30 ==

-- Disco
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/nvme0n1p2  468G  121G  324G  28% /

-- Atualizações pendentes
12

-- Reinício pendente
não

-- Serviços com falha

-- Logs ocupam
Archived and active journals take up 223.4M in the file system.

Para receber esse relatório toda segunda-feira, agende-o com cron ou um timer (veja Agendar Tarefas).

Não automatize o apt upgrade em servidores críticos

Deixe o unattended-upgrades cuidar das correções de segurança e faça as demais atualizações à mão, quando puder acompanhar. Uma atualização que muda a configuração de um serviço pode derrubá-lo de madrugada.


Formas diferentes de fazer

FormaExemploMelhor quando…
Atualizador de Programas (desktop)Abre sozinho quando há atualizaçõesComputador pessoal, uso diário.
Comandos à mãosudo apt update && sudo apt upgradeAcompanhar o que muda.
Correções automáticasunattended-upgrades (já ativo)Sempre: segurança não pode esperar.
Script de relatório + timer/usr/local/sbin/saudeVários servidores; você quer só ser avisado.
AnsibleUm playbook para todas as máquinasMuitas máquinas (veja Ansible).

Quando não funciona

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

O que aconteceu: outra instalação está em andamento, quase sempre a atualização automática de segurança.

Como resolver: espere alguns minutos e tente de novo. Acompanhe com ps -p 2214. Nunca apague o arquivo de trava à mão. Veja Solução de Problemas.

Disco 100% cheio e o apt não roda

O que aconteceu: sem espaço, o apt não consegue nem baixar a lista.

Como resolver: libere espaço primeiro sem o apt: sudo journalctl --vacuum-size=100M, esvazie a lixeira e apague downloads grandes. Depois rode sudo apt clean e sudo apt autoremove.

A partição /boot ficou cheia

O que aconteceu: em instalações com /boot separado e pequeno, kernels antigos acumulados enchem a partição, e a atualização de kernel falha.

Como resolver: sudo apt autoremove remove os kernels sobrando. Confira com df -h /boot. Veja também Boot, GRUB e Kernel.


Exercícios

1. Logs antigos

Complete para apagar logs com mais de 2 semanas:

sudo journalctl --vacuum-time=

2. Serviços com falha

Complete para listar os serviços que falharam:

systemctl

3. Sobras do apt

Complete para remover pacotes que não são mais necessários:

sudo apt

4. cat /var/run/reboot-required responde "No such file or directory". O que isso significa?

5. Qual tarefa o Ubuntu já faz sozinho, sem você configurar nada?


Resumo

  • Correções de segurança, rotação de logs e TRIM de SSD já são automáticos (systemctl list-timers).
  • Semanal: apt update && apt upgrade, reinício pendente, df -h, systemctl --failed.
  • Mensal: apt autoremove, apt clean, journalctl --vacuum-time, teste de backup.
  • Disco cheio: df → du -d 1 | sort -h → find -size.
  • Um script só de leitura + um timer = relatório de saúde sem esforço.