Compilação e Construção de Código
Compiladores C/C++ (gcc/g++)
Essenciais para compilar código C e C++. Permitem transformar código fonte em executáveis.
Gerenciadores de Build (make)
Automatizam o processo de compilação, especialmente útil para projetos com múltiplos arquivos, utilizando arquivos Makefile.
Ferramentas de Build Cruzadas (cmake)
Auxiliam na geração de arquivos de build (como Makefile) de forma independente da plataforma, ideais para projetos complexos.
Auxiliar de Dependências (pkg-config)
Simplifica a obtenção de informações de compilação e linkagem para bibliotecas instaladas.
Depuração e Análise de Programas
Depurador Padrão (gdb)
Uma ferramenta poderosa para depurar programas C/C++. Permite definir breakpoints, inspecionar variáveis e analisar o fluxo de execução.
# Definir breakpoint em uma linha específica
break meu_arquivo.cpp:150
# Definir breakpoint no início de uma função
break MinhaClasse::meuMetodo
# Habilitar exibição formatada de variáveis
set print pretty
# Exibir o objeto 'this' em um método de classe
print *this
# Mostrar variáveis locais na pilha atual
info locals
# Listar chamadas de função na pilha
backtrace
Analisador de Chamadas de Sistema (strace)
Rastreia as chamadas de sistema e sinais que um processo recebe ou envia. Útil para diagnosticar problemas de I/O e permissões.
# Rastrear chamadas de sistema de um executável
strace ./meu_programa
# Anexar a um processo em execução pelo seu PID
strace -p 12345
# Filtrar chamadas de sistema específicas
strace -p 12345 -e read,write,open
Framework de Testes Unitários (Google Test - gtest)
Um framework popular para escrever e executar testes unitários em C++.
Monitoramento de Processos e Sistema
Listagem e Informações de Processos
Comandos para visualizar e entender os processos em execução no sistema.
# Listar todos os processos do usuário atual e informações detalhadas
ps aux
# Mostrar a hierarquia de processos em formato de árvore
pstree -p
Monitoramento em Tempo Real (top)
Exibe uma visão dinâmica e em tempo real dos processos e utilização de recursos do sistema.
# Monitorar todos os processos
top
# Monitorar um processo específico pelo PID
top -p 12345
Monitoramento Interativo (htop)
Uma versão aprimorada do top, com interface mais amigável e recursos interativos.
# Iniciar htop
htop
# Filtrar processos por nome (pressionando F4)
# Pressionar F4 e digitar parte do nome do processo
Sistema de Arquivos Virtual /proc
Fornece uma interface para informações do kernel e de processos em tempo real através de arquivos virtuais.
Coleta de Dados de Desempenho (sar)
Coleta, reporta e salva dados de atividade do sistema para análise posterior.
Análise de Uso de Memória
Verificação de Memória (free)
Exibe a quantidade de memória livre e usada no sistema, incluindo swap.
Detecção de Vazamentos de Memória (mtrace)
Uma ferramenta para ajudar a identificar vazamentos de memória em programas C.
Ferramenta de Depuração de Memória (Valgrind)
Um framework de instrumentação dinâmico amplamente utilizado para detectar erros de memória e vazamentos em programas C/C++.
valgrind \
--leak-check=full \
--show-leak-kinds=all \
--track-origins=yes \
--log-file=valgrind_report.txt \
./meu_executavel
Análise de Arquivos e Disco
Listagem de Arquivos Abertos (lsof)
Lista arquivos abertos por processos, útil para identificar qual processo está usando um determinado arquivo ou montagem.
Monitoramento de I/O (iostat)
Relata estatísticas de utilização de disco e CPU.
Busca de Arquivos (find)
Procura arquivos em uma hierarquia de diretórios com base em diversos critérios (nome, tipo, data, etc.).
Visualização em Árvore (tree)
Exibe o conteúdo de diretórios em formato de árvore, facilitando a visualização da estrutura.
Monitoramento de Rede
Gerenciamento de Rede (ip)
Ferramenta moderna para configurar interfaces de rede, rotas e outras funcionalidades de rede.
Configuração de Adaptadores de Rede (ethtool)
Permite consultar e configurar parâmetros de adaptadores de rede.
Informações de Rede (netstat)
Exibe conexões de rede, tabelas de roteamento, estatísticas de interface, etc.
Estatísticas de Rede (ss)
Uma utilidade mais rápida e moderna que o netstat para investigar sockets.
Gerenciamento de Firewall
Configuração de Regras de Firewall (iptables)
Ferramenta para configurar regras de filtragem de pacotes no kernel Linux.
Análise de Gargalos de Desempenho
Ferramenta de Profiling do Kernel (perf)
Uma suíte poderosa para analisar o desempenho do sistema e de aplicações, identificando gargalos em nível de hardware e software.
# Analisar a frequência de chamadas de função em um processo
perf top -p 12345
# Gravar dados de performance para análise posterior
perf record ./meu_programa
# Obter estatísticas gerais de eventos de performance
perf stat ./meu_programa
# Gerar relatório a partir dos dados gravados
perf report
Análise de Chamadas de Sistema (strace - novamente)
Pode ser usado para identificar lentidão causada por chamadas de sistema ineficientes.
Profiler de Código (gprof)
Analisa o tempo de execução de funções e a relação entre elas.
Gerenciamento de Logs
Rotação e Gerenciamento de Logs (logrotate)
Automatiza a manutenção de arquivos de log, incluindo rotação, compressão e remoção.
Agendamento de Tarefas
Agendador Padrão (cron)
Permite agendar a execução de comandos ou scripts em horários específicos.
Agendador do systemd (systemd timer)
Uma alternativa mais moderna e flexível ao cron, integrada ao sistema de init systemd.
Containerização
Plataforma de Contêineres (Docker)
Permite construir, distribuir e executar aplicações em contêineres isolados.
Comandos comuns incluem: docker pull, docker run, docker build.
Gerenciamento de Sessão de Terminal
Multiplexador de Terminal (tmux)
Permite criar e gerenciar múltiplas sessões de terminal dentro de uma única janela, além de poder desanexar e reanexar a sessões.
# Iniciar uma nova sessão tmux
tmux new-session -s meu_projeto
# Alternar entre janelas
Ctrl+b p (anterior)
Ctrl+b n (próxima)
# Dividir painel verticalmente
Ctrl+b %
# Dividir painel horizontalmente
Ctrl+b "
Multiplexador Moderno (Zellij)
Uma alternativa moderna ao tmux com foco em usabilidade e funcionalidades avançadas.
Manipulação de Variáveis de Ambiente
Exibição e Modificação de Ambiente (env)
Utilizado para listar, definir ou remover variáveis de ambiente para a execução de comandos.
# Listar todas as variáveis de ambiente
env
# Executar um comando sem herdar o ambiente atual
env -i /bin/bash
# Definir uma variável de ambiente temporariamente para um comando
env MINHA_VAR=valor ./meu_script.sh
# Adicionar um diretório ao PATH para um comando específico
env PATH=$PATH:/novo/diretorio ./executavel_especifico
Comandos Úteis Diversos
Monitoramento Contínuo de Saída (watch)
Executa um comando repetidamente e exibe sua saída em tela cheia, útil para observar mudanças.
# Observar a carga do sistema a cada 5 segundos, destacando mudanças
watch -n 5 "top -bn1 | grep 'load average'"
Execução com Tempo Limite (timeout)
Executa um comando por um período determinado, encerrando-o se exceder o tempo.
# Capturar tráfego de rede em uma porta específica por 60 segundos
timeout 60s tcpdump -i eth0 port 80 -w captura_web.pcap