
Quero saber quais arquivos um processo acessa. strace
pode me fornecer essa informação, mas o resultado strace
é bastante "bruto". Existe algo que forneça funcionalidade semelhante, mas de uma forma mais legível (ou seja, filtrar bibliotecas, destacar arquivos no diretório $HOME, fornecer estatísticas sobre a frequência com que as coisas são acessadas, etc.)?
Responder1
Um cara chamado Ole Tange codificou a ferramenta que você está descrevendo. Dê uma olhada aquihttps://gitlab.com/ole.tange/tangetools/tree/master/tracefile. O tracefile é essencialmente um script de shell, portanto, torne-o executável e execute-o. O arquivo .pod é um manual que descreve como usá-lo.
Responder2
fatrace
Instale ofatracepacote:
sudo apt install fatrace
NOME fatrace - reporta eventos de acesso a arquivos em todo o sistema
SINOPSE fatrace [OPÇÕES]
DESCRIÇÃO fatrace relata eventos de acesso a arquivos de todos os processos em execução.
Ele não relata o acesso ao arquivo pelo próprio fatrace, para evitar o registro de eventos causados pela gravação da saída em um arquivo. Ele também ignora eventos em sistemas de arquivos virtuais e de kernel, como sysfs, proc e devtmpfs.
Seu principal objetivo é encontrar processos que ativem o disco desnecessariamente e assim evitem alguma economia de energia.
Por padrão, os eventos são relatados para stdout. Isso causará alguns loops se você executar esta ferramenta, por exemplo, no gnome-terminal, pois isso causa acesso ao disco para cada linha de saída. Para evitar isso, redirecione a saída para um arquivo.
FORMATO DE SAÍDA
Um evento típico se parece comrsyslogd(875): W /var/log/auth.log compiz(1971): O device 8:2 inode 658203
A linha possui os seguintes campos:
Nome do processo. Isso é lido em /proc/pid/comm e pode ser abreviado para nomes de processos longos.
ID do processo
Tipo de evento: Abrir, Ler, Gravar ou Fechar. Combinações são possíveis, como CW para fechar um arquivo escrito.
Arquivo afetado. Em alguns casos, o caminho e o nome não podem ser determinados, por exemplo, porque se trata de um arquivo temporário que já foi excluído. Nesse caso, imprime o número maior e menor dos dispositivos e o número do inode. Para examinar tal processo com mais detalhes, você deve considerar o uso de strace(1).
Se você especificar a opção --timestamp, o primeiro campo será a hora atual.