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
discuss-pt-br@lists.centos.org