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