Administrar sistemas Linux exige não só conhecimento básico dos comandos, mas também a habilidade de diagnosticar problemas complexos em processos e arquivos abertos. Para isso, duas ferramentas poderosas são o strace e o lsof. Neste artigo, vamos explorar como usá-las para investigar problemas avançados, como processos travados, arquivos em uso indevido, problemas de rede, e muito mais.
O que é strace?
strace é uma ferramenta que monitora as chamadas de sistema (system calls) feitas por um processo em execução. Cada interação do processo com o kernel — abrir arquivos, ler, escrever, criar processos, acessar rede, etc. — pode ser observada em tempo real.
Isso torna o strace indispensável para entender exatamente o que um programa está fazendo, onde ele pode estar travando ou falhando, e quais recursos está utilizando.
Como usar o strace
1. Monitorar um comando desde o início
strace comando [argumentos]
Exemplo:
strace ls -l /tmp
2. Anexar a um processo em execução
strace -p PID
3. Filtrar chamadas específicas
Para ver apenas chamadas relacionadas a arquivos:
strace -e trace=file comando
Ou apenas chamadas de rede:
strace -e trace=network comando
4. Salvar saída para análise posterior
strace -o arquivo_saida.log comando
Exemplos práticos com strace
Diagnóstico de travamento
Se um processo está travado, rode:
strace -p PID
Você verá a última chamada feita, podendo identificar se está aguardando um arquivo, bloqueado em rede, etc.
Problemas com permissões
Se um programa falha ao acessar arquivos, o strace mostrará erros do tipo EACCES (Permission denied) e o arquivo afetado.
O que é lsof?
lsof (List Open Files) lista todos os arquivos abertos por processos. Como no Linux tudo é arquivo, o lsof também mostra conexões de rede, pipes, dispositivos, bibliotecas carregadas e muito mais.
É excelente para:
- Ver quais arquivos um processo está usando.
- Descobrir quais processos estão usando um arquivo/diretório específico.
- Diagnosticar portas em uso ou bloqueadas.
- Encontrar arquivos abertos que impedem desmontar um sistema.
Como usar o lsof
1. Listar todos os arquivos abertos (muito extenso)
lsof
2. Arquivos abertos por um processo específico
lsof -p PID
3. Processos que abrem um arquivo/diretório
bashCopiarEditarlsof /caminho/para/arquivo
4. Listar processos usando uma porta TCP
lsof -i TCP:80
Ou todos os processos com conexão TCP/UDP:
lsof -i
Exemplos práticos com lsof
Encontrar quem está usando um arquivo
Quando um disco não desmonta porque “arquivo está em uso”:
bashCopiarEditarlsof /mnt/backup
Verificar se uma porta está ocupada antes de iniciar um serviço
lsof -i :3306
Se aparecer um processo, significa que a porta está em uso.
Usando strace e lsof juntos no troubleshooting
Imagine um serviço que não inicia porque “arquivo ocupado” ou “permissão negada”:
- Use o
lsofpara verificar se algum processo está segurando o arquivo:
lsof /var/log/app.log
- Se não encontrar processos, use o
stracepara monitorar o serviço enquanto ele tenta abrir o arquivo, para capturar o erro:
strace -e trace=file -o trace.log ./start_service.sh
Depois, examine trace.log para detalhes.
Dicas avançadas
- Use
stracecom-fpara seguir processos filhos. - Combine
lsofcomgreppara buscas específicas, ex:lsof | grep nome_arquivo. - Em sistemas com SELinux ou AppArmor, verifique mensagens relacionadas nas chamadas
strace. - Em scripts, redirecione saída do
stracepara logs rotacionados para análise posterior.
Conclusão
strace e lsof são ferramentas essenciais para qualquer administrador Linux que precise ir além do básico e entender exatamente o que está acontecendo com processos, arquivos e conexões no sistema. Saber usá-las pode acelerar muito o diagnóstico e solução de problemas complexos.

Deixe um comentário