Ubuntu Admin
Monitoramento de recursos, processos, serviços, pacotes e logs em servidores Ubuntu.
Monitoramento de Processos
htop
Monitor interativo de processos com barra de CPU/RAM e navegação por teclado
apt install htop
btop
Monitor moderno com gráficos coloridos de CPU, memória, disco e rede
apt install btop
glances
Overview completo do sistema em uma tela. Suporta modo web (porta 61208)
apt install glances
ps
Snapshot de processos.
ps aux + sort por CPU/memnativo
lsof
Lista arquivos abertos por processo, usuário ou porta
nativo
# htop
htop # interativo
htop -u alfredo # filtrar por usuário
# F6→ordenar F9→kill F4→filtrar F5→árvore
# ps
ps aux --sort=-%cpu | head # top CPU
ps aux --sort=-%mem | head # top memória
ps -ef --forest # árvore de processos
# lsof
lsof -i :80 # quem usa porta 80
lsof -p 1234 # arquivos do PID
lsof -u alfredo # arquivos do usuário
Sinais e controle
-15
SIGTERM
Encerrar graciosamente (padrão do kill)
-9
SIGKILL
Forçar encerramento imediato
-1
SIGHUP
Recarregar config (sem parar)
-19
SIGSTOP
Pausar processo
-18
SIGCONT
Retomar processo pausado
-2
SIGINT
Interrupção (Ctrl+C)
kill 1234 # SIGTERM
kill -9 1234 # SIGKILL
killall nginx # matar por nome
pkill -f "python app" # matar por padrão
nice -n 10 cmd # iniciar com prioridade baixa
renice 5 -p 1234 # alterar prioridade em execução
nohup cmd & # imune ao HUP (terminal fechado)
CPU e Memória
# Memória
free -h # legível (GB/MB)
# Mem: total used free shared buff/cache available
# CPU e sistema
vmstat 2 5 # 5 amostras a cada 2s
# r=run queue b=bloqueados si/so=swap bi/bo=bloco I/O
# Por núcleo (pacote sysstat)
sudo apt install sysstat
mpstat -P ALL 1 # stats por CPU core a cada 1s
# Histórico (sysstat coleta automaticamente)
sar -u 1 5 # CPU: 5 amostras
sar -r 1 5 # memória
sar -b 1 5 # I/O
sar -n DEV 1 5 # rede por interface
# Load average: 1m 5m 15m — ideal < número de CPUs
uptime
nproc # número de CPUs
Disco e I/O
df
Espaço livre por partição.
df -h + df -i (inodes)nativo
du
Uso por diretório. Combinar com
sort -rh | headnativo
ncdu
Navegador interativo de uso de disco. Encontra o que está ocupando espaço
apt install ncdu
iotop
I/O por processo em tempo real. Ver qual processo está lendo/escrevendo
apt install iotop
iostat
Stats de I/O por dispositivo.
%util=saturação, await=latênciasysstat
smartctl
Saúde do disco físico via S.M.A.R.T. Detectar falhas iminentes
apt install smartmontools
# Espaço
df -h # disco livre por partição
df -i # inodes
# Uso por diretório
du -sh /var/log # tamanho de um dir
du -ah / | sort -rh | head -20 # maiores arquivos
ncdu / # navegador interativo
# Block devices
lsblk -f # filesystem e UUID
# I/O
sudo iotop -o # só processos com I/O ativo
iostat -x 1 5 # extended, 5 amostras
# Saúde do disco
sudo smartctl -H /dev/sda # health check
sudo smartctl -a /dev/sda # relatório completo
Monitoramento de Rede
ss
Sockets e conexões. Substituto moderno do netstat
nativo (iproute2)
iftop
Bandwidth por interface em tempo real
apt install iftop
nethogs
Bandwidth por processo (qual app consome banda)
apt install nethogs
nload
Gráfico de download/upload em tempo real
apt install nload
tcpdump
Captura de pacotes. Debug de tráfego de rede
nativo
ss — flags essenciais
-tTCP
-uUDP
-llistening
-nnumérico
-pprocesso
-sresumo
ss -tulnp # TCP+UDP listening com PID
ss -tnp # TCP estabelecidas com PID
ss -s # resumo de sockets
ss -tnp '( dport = :80 or sport = :80 )'
ss dst 192.168.1.1 # conexões para IP específico
# Bandwidth
sudo iftop -i eth0 -n # sem resolução de nomes
sudo nethogs eth0 # banda por processo
# Captura de pacotes
sudo tcpdump -i eth0 port 80
sudo tcpdump -i eth0 -w captura.pcap
sudo tcpdump -r captura.pcap
Gerenciamento de Serviços (systemctl)
# Operações básicas
systemctl status nginx
systemctl start|stop|restart nginx
systemctl reload nginx # recarregar config (sem parar)
systemctl enable|disable nginx # habilitar/desabilitar no boot
systemctl is-active nginx
systemctl is-enabled nginx
# Listagem
systemctl list-units --type=service
systemctl list-units --type=service --all
systemctl list-units --failed
systemctl list-unit-files --type=service
# Boot
systemd-analyze # tempo total de boot
systemd-analyze blame # serviços mais lentos
systemd-analyze critical-chain
journalctl
journalctl -u nginx # logs de um serviço
journalctl -u nginx -f # follow (live)
journalctl -u nginx -n 100 # últimas 100 linhas
journalctl -u nginx -p err # só erros
journalctl -u nginx --since "1 hour ago"
journalctl --boot # boot atual
journalctl --boot -1 # boot anterior
journalctl -p err --since "today" # todos os erros hoje
journalctl --disk-usage
journalctl --vacuum-time=7d # limpar logs > 7 dias
Criar serviço customizado
# /etc/systemd/system/meu-app.service
[Unit]
Description=Meu App Node.js
After=network.target
[Service]
Type=simple
User=alfredo
WorkingDirectory=/home/alfredo/app
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5
Environment=NODE_ENV=production PORT=3000
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now meu-app
journalctl -u meu-app -f
Gerenciamento de Pacotes
# Atualizar
sudo apt update # atualizar lista
sudo apt upgrade # atualizar pacotes
sudo apt full-upgrade # upgrade + remover obsoletos
# Instalar / remover
sudo apt install htop ncdu iotop
sudo apt remove nginx # remove (mantém config)
sudo apt purge nginx # remove + config
sudo apt autoremove # remover dependências órfãs
sudo apt clean # limpar cache
# Busca e info
apt search htop
apt show htop
apt list --installed | grep nginx
apt list --upgradable
# dpkg
dpkg -l | grep nginx # pacotes instalados
dpkg -L nginx # arquivos de um pacote
dpkg -S /usr/sbin/nginx # qual pacote instalou o arquivo
sudo dpkg -i pacote.deb # instalar .deb local
sudo dpkg --configure -a # corrigir instalação quebrada
# Segurar versão
sudo apt-mark hold nginx
sudo apt-mark unhold nginx
sudo apt-mark showhold
# snap
sudo snap install code --classic
snap list
sudo snap refresh
snap info code
Gerenciamento de Logs
# Logs principais
tail -f /var/log/syslog
tail -f /var/log/auth.log
grep "Failed password" /var/log/auth.log | tail -20
grep "Accepted" /var/log/auth.log | tail -20
# Logs comprimidos
zcat /var/log/syslog.1.gz | grep error
# logrotate
logrotate -d /etc/logrotate.conf # dry run
logrotate -f /etc/logrotate.conf # forçar rotação
# /etc/logrotate.d/meu-app
/home/alfredo/app/logs/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
postrotate
systemctl reload meu-app
endscript
}
Informações do Sistema
uname -a # kernel, hostname, arch
hostnamectl # hostname, SO, kernel (formato legível)
cat /etc/os-release # versão do SO
uptime # tempo ligado + load average
lscpu # CPUs, cores, threads, cache
nproc # número de CPUs disponíveis
cat /proc/meminfo # memória detalhada
sudo lshw -short # hardware resumido
lspci # dispositivos PCI
lsusb # USB
Usuários e Grupos
# Criar
sudo useradd -m -s /bin/bash -G sudo,docker alfredo
sudo passwd alfredo
# Modificar
sudo usermod -aG docker alfredo # adicionar ao grupo
sudo usermod -s /bin/zsh alfredo # mudar shell
sudo usermod -L alfredo # bloquear login
sudo usermod -U alfredo # desbloquear
# Info
id alfredo # UID, GID, grupos
groups alfredo
# Sessões
who # logados agora
w # logados + atividade
last -n 10 # últimos 10 logins
lastb # tentativas falhas
lastlog # último login de cada usuário
# sudo
sudo visudo # editar sudoers com segurança
sudo -l # listar permissões do usuário
# /etc/sudoers.d/alfredo
# alfredo ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Agendamento de Tarefas
crontab -e # editar crontab
crontab -l # listar
| Expressão | Significado |
|---|---|
| * * * * * | todo minuto |
| */5 * * * * | a cada 5 minutos |
| 0 2 * * * | todo dia às 2h |
| 0 0 * * 0 | domingo à meia-noite |
| 0 9 1 * * | dia 1 de cada mês às 9h |
| @reboot | ao iniciar o sistema |
| @daily | uma vez por dia |
| @weekly | uma vez por semana |
# Exemplos
0 2 * * * /usr/bin/certbot renew --quiet
*/5 * * * * /home/alfredo/check.sh >> /var/log/check.log 2>&1
0 0 * * 0 /home/alfredo/backup.sh
@reboot /home/alfredo/app/start.sh
# at — executar uma vez
sudo apt install at
echo "systemctl restart nginx" | at 03:00
at -l # listar jobs pendentes
atrm 1 # cancelar job 1
Limites do Sistema
ulimit -a # ver todos os limites
ulimit -n # max arquivos abertos
ulimit -n 65535 # aumentar para sessão atual
# Permanente: /etc/security/limits.conf
# alfredo soft nofile 65535
# alfredo hard nofile 65535
# * soft nproc 10000
cat /proc/1234/limits # limites de um processo
# sysctl — parâmetros do kernel
sysctl -a
sudo sysctl -w net.ipv4.ip_forward=1 # temporário
sudo sysctl -p # aplicar /etc/sysctl.conf
Diagnóstico Rápido
Processos pesados
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
ps aux --sort=-%mem | head -10
Disco cheio — onde?
du -sh /* 2>/dev/null | sort -rh | head
ncdu /
ncdu /
Porta em uso
ss -tulnp | grep :80
lsof -i :80
lsof -i :80
Últimos erros
journalctl -p err --since "1 hour ago"
grep -i error /var/log/syslog | tail
grep -i error /var/log/syslog | tail
I/O alto
sudo iotop -o
iostat -x 1 5
iostat -x 1 5
Serviços com falha
systemctl list-units --failed
journalctl -u SERVIÇO -n 50
journalctl -u SERVIÇO -n 50
Conexões abertas
ss -tulnp
ss -tnp state established
ss -tnp state established
Saúde geral
uptime && free -h && df -h
# Verificar serviços críticos
for svc in nginx ssh ufw fail2ban; do
echo "$svc: $(systemctl is-active $svc)"
done
# Arquivos modificados recentemente
find /etc -newer /etc/passwd -type f 2>/dev/null
ls -lt /var/log/ | head