9 - Administração Avançada e Troubleshooting
Processo de Boot do Linux Entender o processo de boot é essencial para troubleshooting de servidores que não iniciam corretamente. Sequência de Boot Etapa Componente Função 1 BIOS/UEFI Testa hardware (POST), encontra dispositivo de boot 2 Bootloader (GRUB2) Carrega o kernel e initramfs na memória 3 Kernel Inicializa hardware, monta root filesystem 4 initramfs Sistema de arquivos temporário para carregar drivers 5 systemd (PID 1) Primeiro processo, inicia todos os serviços 6 Target Estado final (multi-user, graphical) Analisar o Boot 1 2 3 4 5 6 7 8 9 10 11 # Tempo total de boot systemd-analyze # Tempo de cada serviço (mais lentos primeiro) systemd-analyze blame # Gráfico de boot (gera SVG) systemd-analyze plot > boot.svg # Cadeia crítica (o que atrasou o boot) systemd-analyze critical-chain Logs de Boot 1 2 3 4 5 6 7 8 9 10 11 # Logs do boot atual journalctl -b # Logs do boot anterior (útil após crash) journalctl -b -1 # Apenas erros do boot journalctl -b -p err # Mensagens do kernel dmesg -T | head -50 Targets (antigos Runlevels) Target Runlevel Descrição poweroff.target 0 Desligar rescue.target 1 Modo de recuperação (single user) multi-user.target 3 Modo texto com rede graphical.target 5 Modo gráfico reboot.target 6 Reiniciar 1 2 3 4 5 6 7 8 # Ver target atual systemctl get-default # Mudar target padrão sudo systemctl set-default multi-user.target # Mudar target agora (sem reiniciar) sudo systemctl isolate rescue.target Gerenciamento de Processos ps - Process Status 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # Todos processos ps aux # Processos do usuário ps -u usuario # Árvore de processos ps auxf pstree # Processos por CPU ps aux --sort=-%cpu | head # Processos por memória ps aux --sort=-%mem | head # Informações específicas ps -eo pid,user,cmd,%cpu,%mem top - Monitor em Tempo Real 1 2 3 4 5 6 7 8 9 10 # Iniciar top top # Comandos dentro do top: # h - ajuda # k - matar processo # r - renice processo # M - ordenar por memória # P - ordenar por CPU # q - sair htop - Top Melhorado 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # Instalar sudo apt install htop # Executar htop # Recursos: # F2 - configuração # F3 - buscar # F4 - filtrar # F5 - árvore # F6 - ordenar # F9 - matar # F10 - sair kill - Terminar Processos 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # Matar por PID kill 1234 # Forçar término kill -9 1234 kill -SIGKILL 1234 # Término gracioso kill -15 1234 kill -SIGTERM 1234 # Matar por nome killall firefox pkill firefox # Matar processos do usuário pkill -u usuario nice e renice - Prioridade 1 2 3 4 5 6 7 8 # Iniciar com prioridade (-20 a 19, menor = maior prioridade) nice -n 10 comando # Alterar prioridade renice -n 5 -p 1234 # Prioridade por usuário renice -n 10 -u usuario Processos em Background 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # Executar em background comando & # Listar jobs jobs # Trazer para foreground fg %1 # Enviar para background bg %1 # Suspender processo (Ctrl+Z) # Depois: bg para continuar em background # Desassociar do terminal nohup comando & systemd - Gerenciamento de Serviços systemctl - Controle de Serviços 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # Status do serviço systemctl status nginx # Iniciar serviço sudo systemctl start nginx # Parar serviço sudo systemctl stop nginx # Reiniciar serviço sudo systemctl restart nginx # Recarregar configuração sudo systemctl reload nginx # Habilitar no boot sudo systemctl enable nginx # Desabilitar no boot sudo systemctl disable nginx # Verificar se está habilitado systemctl is-enabled nginx # Verificar se está ativo systemctl is-active nginx Listar Serviços 1 2 3 4 5 6 7 8 9 10 11 # Todos serviços systemctl list-units --type=service # Serviços ativos systemctl list-units --type=service --state=active # Serviços que falharam systemctl list-units --type=service --state=failed # Serviços habilitados systemctl list-unit-files --type=service --state=enabled Criar Serviço Customizado 1 sudo vim /etc/systemd/system/meuapp.service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [Unit] Description=Minha Aplicação After=network.target [Service] Type=simple User=usuario WorkingDirectory=/opt/meuapp ExecStart=/opt/meuapp/start.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target 1 2 3 4 5 6 # Recarregar systemd sudo systemctl daemon-reload # Habilitar e iniciar sudo systemctl enable meuapp sudo systemctl start meuapp Targets (Runlevels) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # Ver target atual systemctl get-default # Mudar target padrão sudo systemctl set-default multi-user.target # Targets comuns: # poweroff.target (runlevel 0) # rescue.target (runlevel 1) # multi-user.target (runlevel 3) # graphical.target (runlevel 5) # reboot.target (runlevel 6) # Mudar para target sudo systemctl isolate multi-user.target Gerenciamento de Disco df - Disk Free 1 2 3 4 5 6 7 8 # Espaço em disco df -h # Inodes df -i # Tipo de filesystem df -T du - Disk Usage 1 2 3 4 5 6 7 8 # Tamanho do diretório du -sh /var # Top 10 maiores diretórios du -h /var | sort -rh | head -10 # Tamanho de cada subdiretório du -h --max-depth=1 /var lsblk - Listar Dispositivos de Bloco 1 2 3 4 5 6 7 8 # Listar dispositivos lsblk # Com filesystem lsblk -f # Tamanhos em bytes lsblk -b fdisk - Particionar Disco 1 2 3 4 5 6 7 8 9 10 11 12 13 # Listar partições sudo fdisk -l # Particionar disco sudo fdisk /dev/sdb # Comandos dentro do fdisk: # m - ajuda # p - listar partições # n - nova partição # d - deletar partição # w - salvar e sair # q - sair sem salvar Formatar Partição 1 2 3 4 5 6 7 8 9 10 11 # ext4 sudo mkfs.ext4 /dev/sdb1 # xfs sudo mkfs.xfs /dev/sdb1 # btrfs sudo mkfs.btrfs /dev/sdb1 # Com label sudo mkfs.ext4 -L dados /dev/sdb1 Montar Filesystem 1 2 3 4 5 6 7 8 # Montar temporário sudo mount /dev/sdb1 /mnt # Desmontar sudo umount /mnt # Montar permanente (/etc/fstab) sudo vim /etc/fstab 1 2 3 # <device> <mount> <type> <options> <dump> <pass> /dev/sdb1 /dados ext4 defaults 0 2 UUID=xxx /backup ext4 defaults,noatime 0 2 1 2 3 4 5 # Montar tudo do fstab sudo mount -a # Ver UUID sudo blkid FSCK - Verificar e Reparar Sistemas de Arquivos O fsck (File System Check) verifica e repara inconsistências em sistemas de arquivos. Essencial quando o sistema não monta uma partição corretamente. ...