Lab 2.1 - Inspeção do Kernel e Processos do Sistema
Objetivos
Ao final deste lab, você será capaz de:
- Inspecionar o kernel Linux
- Verificar os processos do sistema
- Examinar o systemd e os serviços
- Compreender a estrutura dos processos
Pré-requisitos
- Sistema Linux funcional (Ubuntu/Debian recomendado)
- Acesso root ou sudo
- Terminal aberto
Exercício 1: Informações sobre o Kernel
Etapa 1: Versão do Kernel
# Ver a versão do kernel
uname -a
# Somente a versão
uname -r
# Informações detalhadas
cat /proc/version
Pergunta: Qual versão do kernel você está usando?
Etapa 2: Módulos do Kernel
# Ver os módulos carregados
lsmod
# Ver detalhes de um módulo
modinfo nome-modulo
# Ver módulos relacionados a uma palavra-chave
lsmod | grep network
Etapa 3: Parâmetros do Kernel
# Ver os parâmetros sysctl
sysctl -a
# Ver um parâmetro específico
sysctl kernel.version
# Ver os parâmetros de rede
sysctl net.ipv4
Exercício 2: Processos do Sistema
Etapa 1: Processo Init (PID 1)
# Ver o processo init
ps -p 1
# Detalhes do processo
ps -p 1 -o pid,ppid,cmd,etime
# Ver o tipo de init
systemctl --version
Pergunta: Qual sistema de init você está usando? (systemd, SysVinit, etc.)
Etapa 2: Processos do Sistema
# Ver todos os processos
ps aux
# Ver a árvore de processos
pstree
# Com PID
pstree -p
# Ver somente os processos do sistema
ps aux | grep -E '\[.*\]'
Etapa 3: Processos por Usuário
# Processos do root
ps -u root
# Processos do seu usuário
ps -u $USER
# Contar os processos
ps aux | wc -l
Exercício 3: systemd e Serviços
Etapa 1: Estado do systemd
# Ver a versão do systemd
systemctl --version
# Ver o estado do systemd
systemctl status
# Ver as unidades ativas
systemctl list-units --type=service --state=running
Etapa 2: Serviços do Sistema
# Ver todos os serviços
systemctl list-units --type=service
# Serviços ativos
systemctl list-units --type=service --state=active
# Serviços com falha
systemctl list-units --type=service --state=failed
Etapa 3: Detalhes de um Serviço
# Estado de um serviço (ex: sshd)
systemctl status sshd
# Ver os logs
journalctl -u sshd
# Últimas linhas
journalctl -u sshd -n 50
Exercício 4: Exploração do /proc
Etapa 1: Informações do Sistema
# Informações da CPU
cat /proc/cpuinfo
# Informações de memória
cat /proc/meminfo
# Informações do sistema
cat /proc/loadavg
Etapa 2: Processos em /proc
# Ver os processos
ls /proc/ | grep -E '^[0-9]+$'
# Informações sobre um processo (substituir PID)
cat /proc/1/status
# Arquivos abertos por um processo
ls -l /proc/1/fd/
Etapa 3: Informações de Rede
# Conexões de rede
cat /proc/net/sockstat
# Estatísticas de rede
cat /proc/net/dev
Exercício 5: Análise Avançada
Etapa 1: Uso de Recursos
# Processos no topo
top -bn1 | head -20
# Com htop (se instalado)
htop
# Uso de CPU por processo
ps aux --sort=-%cpu | head -10
# Uso de memória por processo
ps aux --sort=-%mem | head -10
Etapa 2: Árvore de Processos
# Árvore completa
pstree -a
# Com usuários
pstree -u
# Limitar a profundidade
pstree -L 2
Etapa 3: Processos Zumbi
# Ver os processos zumbi
ps aux | grep -w Z
# Contar os zumbis
ps aux | grep -w Z | wc -l
Exercício 6: Monitoramento em Tempo Real
Etapa 1: top
# Iniciar top
top
# Comandos no top:
# - 'q': Sair
# - 'k': Matar um processo
# - 'r': Alterar prioridade (renice) de um processo
# - 'f': Alterar as colunas exibidas
Etapa 2: htop (se disponível)
# Instalar htop
sudo apt install htop
# Iniciar
htop
# Mais interativo que o top
Etapa 3: Script de Monitoramento
# Criar um script simples
cat > monitor.sh << 'EOF'
#!/bin/bash
echo "=== Kernel ==="
uname -a
echo
echo "=== Load Average ==="
uptime
echo
echo "=== Top 5 CPU ==="
ps aux --sort=-%cpu | head -6
echo
echo "=== Top 5 Memory ==="
ps aux --sort=-%mem | head -6
EOF
chmod +x monitor.sh
./monitor.sh
Verificação
Checklist
Verifique se você consegue:
- Ver a versão do kernel
- Listar os módulos carregados
- Identificar o processo init (PID 1)
- Ver os processos do sistema
- Usar systemctl para ver os serviços
- Explorar /proc para informações do sistema
- Usar top/htop para monitoramento
Perguntas para Reflexão
-
Qual é o papel do processo PID 1?
- Ele é o pai de todos os processos
- Ele gerencia processos órfãos
- Ele inicializa o sistema
-
Qual é a diferença entre ps e top?
psmostra um instantâneotopmostra em tempo real
-
Por que o /proc é importante?
- Interface para o kernel
- Informações em tempo real
- Não são arquivos reais, tudo é virtual
Próximos Passos
- Lab 2.2: Análise da Gestão de Memória
- Lab 2.3: Monitoramento Avançado do Sistema
- Capítulo 2.3: Gestão de Memória e Swap
Lab criado em: Dezembro 2024