Comandos Strace para solução de problemas de processos Linux

Quando sob nossa responsabilidade, temos máquinas com sistemas operacionais Linux, uma das maneiras mais úteis e práticas de gerenciar corretamente cada aspecto deles é conhecer os diferentes utilitários e comandos que existem para implantá-los e apoiá-los.

Desta vez, o Solvetic falará sobre um utilitário de linha de comando chamado strace e veremos como ele pode se tornar prático para a administração do sistema operacional.

O que é stracestrace é uma ferramenta de linha de comando útil para diagnosticar, instruir e executar tarefas de depuração. Os administradores de sistema consideram o strace uma ferramenta prática para resolver problemas com programas para os quais a fonte não está disponível, uma vez que eles não precisam ser recompilados para rastreá-los.
A ferramenta strace captura e registra todas as chamadas de sistema feitas por um processo e os sinais recebidos pelo processo, strace é responsável por exibir o nome de cada chamada de sistema junto com seus argumentos entre parênteses e seu valor de retorno ao erro padrão, opcionalmente, será possível redirecioná-lo para um arquivo.

1. Instalação Strace


Para instalar o strace, devemos executar um dos seguintes comandos:
 sudo apt install strace (Debian ou Ubuntu) yum install strace (RedHat ou CentOS) dnf install strace (Fedora)
No caso de um programa travar ou se comportar de forma inesperada, será possível acessar as chamadas do sistema para ter uma ideia do que exatamente aconteceu durante sua execução.

As chamadas de sistema podem ser categorizadas em diferentes eventos: aqueles relacionados ao gerenciamento de processos, aqueles que tomam um arquivo como argumento, aqueles que envolvem redes, alocação de memória, sinais, IPC e também chamadas de sistema relacionadas a descritores de arquivos.

2. Como solucionar problemas de processo no Linux com comandos strace


A seguir, veremos diferentes comandos strace para resolver os diferentes problemas de processo que podem surgir no Linux.

Rastreie chamadas de sistema com straceEsta opção permite rastrear todas as chamadas de sistema feitas pelo comando df, para isso executamos o seguinte:

 strace df -h

Nesta saída, podemos ver vários tipos de chamadas de sistema feitas pelo comando df, por exemplo, um deles é:

 open ("/ etc / ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Onde:
  • Aberto: é o tipo de chamada do sistema
  • É o argumento da chamada do sistema: "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: É o valor de retorno da chamada do sistema

Rastrear processos PID do LinuxSe um processo já estiver em execução no sistema, será possível rastreá-lo por meio de seu PID da seguinte forma:

 sudo strace -c -p 465
Isso preencherá a tela com a saída contínua que mostra que as chamadas do sistema estão sendo feitas pelo processo, para finalizar, pressionaremos as teclas Ctrl + C.

Obtenha o resumo de um processo LinuxUtilizando o parâmetro -c, será possível gerar um relatório de tempo total, chamadas e erros para cada chamada do sistema, para isso executaremos a seguinte sintaxe:

 sudo strace -c -p (PID)

Imprime o ponteiro da instrução durante a chamada do sistema. A opção -i exibe o ponteiro da instrução no momento de cada chamada do sistema feita pelo programa.

 sudo strace -i df -h

Mostrar hora do dia para cada linha de saída de rastreamentoCom strace, é possível imprimir a hora do dia para cada linha na saída de rastreamento, usando o sinalizador -t:

 sudo strace -t df -h

Exibir o tempo de impressão gasto em chamadas do sistemaPara mostrar a diferença de tempo entre o início e o fim de cada chamada do sistema feita por um programa, devemos usar a opção -T:

 sudo strace -T df -h

Rastreie chamadas específicasO comando trace = write é conhecido como uma expressão qualificada, onde trace é um qualificador (outros incluem sinal, abreviação, verbose, raw, read ou write). Neste caso, você digita o valor do qualificador. O comando a seguir exibe em tempo real as chamadas do sistema para imprimir a saída df na saída padrão:

 sudo strace -e trace = write df -h

Alguns comandos adicionais que podemos usar são:

 sudo strace -e trace = abrir, fechar df -hsudo strace -e trace = abrir, fechar, ler, escrever df -hsudo strace -e trace = all df -h

Traçar chamadas do sistema com base em uma condiçãoEste comando pode ser usado para rastrear todas as chamadas de sistema que envolvem gerenciamento de processos, iremos executar o seguinte:

 sudo strace -q -e trace = process df -h

Agora, para rastrear todas as chamadas de sistema que usam um nome de arquivo como argumento, executaremos o seguinte comando:

 sudo strace -q -e trace = arquivo df -h

Para rastrear todas as chamadas de sistema que envolvem alocação de memória, executaremos a seguinte linha:

 sudo strace -q -e trace = memória df -h

Redirecionar rastreamento para arquivo de saídaSe quisermos gravar as mensagens de acompanhamento enviadas para um erro padrão em um arquivo, usaremos a opção -o. Isso significa que apenas a saída do comando é impressa na tela da seguinte forma:

 sudo strace -o df_debug.txt df -h

Podemos visualizar este arquivo executando a linha:

 cat df_debug.txt

Implantar saída de depuração do straceSe quisermos exibir as informações de depuração para a ferramenta strace, devemos usar o sinalizador -d:

 strace -d df -h

Ajuda stracePara exibir a ajuda do comando strace, executaremos a seguinte linha:

 homem strace

É assim que vimos como o strace se torna mais uma ajuda para tarefas de gerenciamento em distros Linux.

wave wave wave wave wave