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.
- 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ência | Tarefa | Comando |
|---|---|---|
| Semanal | Atualizar pacotes | sudo apt update && sudo apt upgrade |
| Semanal | Atualizar flatpaks | flatpak update |
| Semanal | Ver se precisa reiniciar | cat /var/run/reboot-required |
| Semanal | Espaço em disco | df -h |
| Semanal | Serviços com falha | systemctl --failed |
| Mensal | Remover pacotes e kernels sem uso | sudo apt autoremove |
| Mensal | Limpar o cache do apt | sudo apt clean |
| Mensal | Limitar o tamanho dos logs | sudo journalctl --vacuum-time=4weeks |
| Mensal | Erros no log | journalctl -p err -b |
| Mensal | Testar a restauração do backup | Restaurar um arquivo e abri-lo |
| A cada 2 anos | Nova versão LTS | sudo 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
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:
| Comando | O que remove |
|---|---|
sudo apt clean | Todo o cache de pacotes baixados |
sudo apt autoclean | Só os pacotes em cache que nem existem mais no repositório |
sudo apt autoremove --purge | Pacotes órfãos e também os arquivos de configuração deles |
flatpak uninstall --unused | Runtimes 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/loge 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).~/.cachee a lixeira,~/.local/share/Trash.
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:
- Confira a data do último backup:
ls -lt /media/ana/HD/backup | head -3. - Restaure um arquivo qualquer para uma pasta temporária e abra-o.
- 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).
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
| Forma | Exemplo | Melhor quando… |
|---|---|---|
| Atualizador de Programas (desktop) | Abre sozinho quando há atualizações | Computador pessoal, uso diário. |
| Comandos à mão | sudo apt update && sudo apt upgrade | Acompanhar o que muda. |
| Correções automáticas | unattended-upgrades (já ativo) | Sempre: segurança não pode esperar. |
| Script de relatório + timer | /usr/local/sbin/saude | Vários servidores; você quer só ser avisado. |
| Ansible | Um playbook para todas as máquinas | Muitas máquinas (veja Ansible). |
Quando não funciona
$ 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.
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.
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:
2. Serviços com falha
Complete para listar os serviços que falharam:
3. Sobras do apt
Complete para remover pacotes que não são mais necessários:
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.