Pessoal,
Eu comentei ontem sobre o Strace aqui na lista, e recebi um email
comentando sobre, acabei escrevendo um pouco sobre o comando Strace e
Ltrace, decidi compartilha com o grupo, talvez ajude-os em algo!
Existe dois comandos chamados trace de processos que você pode utilizar
e são bastante úteis, pois as mensagens geradas por um programa sempre
são mensagens criadas pelo programador, mas não diz tudo o que acontece
por dentro do processo.
O Strace ele faz um trace e mostra todas as chamadas de sistema, tudo
que é chamada para o Kernel, para explicar isso fica mais complicado,
mas normalmente o programa chama uma função e ela é convertida para um
função da API do Kernel.
Aqui tá um exemplo que pode te ajudar.
Esse é o comando 'strace ls' no meu home.
/* 61 entries */, 32768) = 1984
getdents(3, /* 0 entries */, 32768) = 0
close(3) = 0
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7fcdbddcf000
write(1, "Desktop\nDocuments\nDownloads\nISOS"..., 79) = 79
Todas as palavras no começo, como por exemplo mmap, você pode no seu
terminal e rodar man mmap, e você verá o que essa função faz e quais são
os argumentos que ela recebe, isso é legal para conhece passo a passo
que o processo pode estar fazendo e o programador não te disse.
Explore bem o man do strace que ele pode te ajudar em alguns momentos
durante sua vida com Linux.
Outro também bem parecido não sei se você conhece é o Ltrace, ele faz a
mesma função que o Strace, porém o S do Strace, é System, e o L do
Ltrace é LIbrary. Concluimos então que o Ltrace ele faz a mesma coisa só
que para as funções das bibliotecas!
teste depois com alguns comandos colocar o strace -c comando , ou ,
ltrace -c comando.
Você verá quantas vezes uma chamada de sistema ou de biblioteca foi
realizada e quantos erros podem ter retornados quando essa função foi
chamada. Não é para se preocupar se o programa esta rodando normal,
exemplo, vários programas realizam tentativas de abrir aquivos em
caminhos especificos, quando não existem eles procuram em outros
lugares, mas a função que tentou abrir o arquivo que não existe gerou um
erro, mas não se preocupe com o tempo você pegará o jeito dele.
Outra dica boa, é as opções -f -F , são para os Forks gerados pelo
processo que vc está monitorando, colocando essas opções vocês vão ver
tudo do processo principal e incluindo tudo dos processos que foram fork
desse principal!
Espero te ajudado!
Abs!
-Aslan