Você pode observar o que o processo faz com o comando strace . Strace mostra as chamadas de sistema realizadas por um processo. Tudo - um processo que afeta seu ambiente é feito através de chamadas do sistema. Por exemplo, criar um diretório só pode ser feito chamando a mkdir
chamada de sistema . O comando mkdir
shell é um wrapper fino em torno da chamada do sistema com o mesmo nome.
Para ver o que o mkdir
está fazendo, execute
strace mkdir foo
Você verá muitas chamadas diferentes de mkdir
(76 no total para um mkdir
no meu sistema), começando com execve
que carrega a imagem binária do processo, então chama para carregar as bibliotecas e arquivos de dados usados pelo programa, chamadas para alocar memória, chamadas para observar o estado do sistema, ... Finalmente o comando chama mkdir
e se encerra, terminando com exit_group
.
Para observar o que um programa de GUI está fazendo, inicie-o e observe-o apenas durante uma ação. Descubra o ID do processo do programa (com ps x
, htop
ou qualquer outro visualizador de processo) e, em seguida, execute
strace -o file_manager.mkdir.strace -p1234
Isso coloca o rastreio do processo 1234 no arquivo file_manager.mkdir.strace
. Pressione Ctrl + C para parar strace
sem parar o programa. Note que algo como inserir o nome do diretório pode envolver milhares ou dezenas de milhares de chamadas de sistema: manipular movimentos do mouse, mudanças de foco e assim por diante é muito mais complexo nesse nível do que criar um diretório.
Você pode selecionar quais chamadas do sistema são registradas na strace
output passando a opção -e
. Por exemplo, para omitir read
, write
e select
:
strace -e \!read,write,select …
Para gravar somente mkdir
chamadas:
strace -e mkdir …
¹ Ok, quase tudo. A memória compartilhada envolve apenas uma chamada do sistema para a configuração inicial.