Neste tutorial, nos aprofundamos no comando linux strace e demonstramos alguns exemplos de usos.
Sintaxe do comando básico
O comando strace recebe a seguinte sintaxe:
$ strace options comando
Como instalar o comando linux strace
A maioria das distribuições de Linux modernas navio com utilitário strace por padrão. No entanto, se a Strace não estiver instalada em seu sistema por qualquer motivo, siga as etapas abaixo para instalá -lo.
No Debian / Ubuntu
Se você estiver executando sistemas baseados em Debian / Ubuntu, execute:
$ sudo apt install strace
Em Rhel / Centos
$ sudo yum install strace
Para verificar se o STRACE está instalado, você pode verificar sua versão como mostrado.
$ strace -versão
Vamos agora conferir alguns usos de exemplo.
Comando básico de strace
Em seu formato mais básico, o comando strace rastreará e exibirá chamadas do sistema, os argumentos (fechados em aparelhos quadrados ou parênteses) e a chamada executável.
No exemplo abaixo, podemos ver os argumentos de executar o script olá.sh, Ligue entre parênteses entre parênteses na primeira linha.
$ strace ./olá.sh
Na última linha, você pode ver o status de saída do comando, neste caso, 0. Isso implica que o comando foi executado com sucesso sem nenhum erro. Um código de saída de -1 significa que um erro foi encontrado durante a execução.
Conte as chamadas do sistema
Se você deseja obter o número de chamadas do sistema, use o -c opção para a contagem como mostrado.
$ strace -C ./olá.sh
A partir da saída acima, você pode ver o número de chamadas do sistema feitas, incluindo fazer as chamadas.
Exibir chamadas de sistema específicas com Strace
Além disso, você pode optar por ver a natureza das chamadas do sistema feitas com Strace usando o -e opção seguida pela natureza da chamada do sistema. No trecho mostrado, exibimos as chamadas de sistema de gravação e leitura.
$ STRACE -E Trace = Escreva ./olá.sh
$ strace -e rastrear = ler ./olá.sh
Trace Sistema de Rede de Rede
Você pode restringir o Strace a exibir chamadas de sistema de rede especificando o tipo de chamada. Aqui. rastreio = rede indica que pretendemos obter a chamada de rede do comando de rede ping 8.8.8.8 -C 4.
$ strace -e rastrear = rede ping 8.8.8.8 -C 4
Chamadas de sistema de sinal de rastreamento
Para chamadas relacionadas ao sistema, use o argumento conforme indicado no comando abaixo. O comando imprime o intervalo de sinal para o ping 8.8.8.8 -C 4 comando.
$ strace -e rastrear = sinal ping 8.8.8.8 -C 4
Imprimindo o registro de data e hora de cada chamada do sistema
Para extrair o registro de data e hora para cada chamada do sistema, use o -r opção como demonstrado no seguinte comando.
$ strace -r ping 8.8.8.8 -C 4
Como você pode ver, um registro de registro relativo é impresso para cada chamada do sistema. A diferença horária entre chamadas sucessivas do sistema é capturada e gravada.
Exibir a duração gasta em fazer chamadas do sistema
Além disso, você pode imprimir a duração do tempo gasto para cada chamada de sistema usando o -T opção como mostrado. O tempo gasto é indicado na última coluna, conforme indicado.
$ strace -t ping 8.8.8.8 -C 4
Exibir a hora exata de cada chamada do sistema
Para imprimir a hora real ou exata do sistema, invocar o -t opção como mostrado. O tempo de relógio em tempo real ou de parede é impresso na primeira coluna.
$ strace -t ./olá.sh
Exibir o ponteiro de instrução para cada chamada
Para imprimir o ponteiro de instrução para cada chamada de sistema, use o -eu opção.
$ strace -i ./olá.sh
Salve a saída de chamadas do sistema em um arquivo de texto
Finalmente, o comando strace oferece a opção de salvar a saída em um arquivo de texto, como mostrado.
$ strace -o sample_output.TXT ./olá.sh
Aqui, sample_output.TXT é o arquivo de saída, enquanto ./olá.sh é o comando cujo sistema chama que estamos traçando.
Empacotando
O comando strace é um utilitário de linha de comando prático e poderoso que ajuda a depurar aplicativos, comandos e processos, especialmente se você não tiver o código-fonte disponível. É a ferramenta preferida para desenvolvedores de software e administradores de sistemas.