Como descobrir quais programas estão lendo meu arquivo?

6

Eu tenho um arquivo de configuração e quero aprender o que os executáveis estão usando (se houver). Eu quero pegar quem é o leitor deste arquivo.

Se eu watch com algum intervalo, eu sinto falta, porque a leitura acontece tão rapidamente:

watch -d -n 1 "lsof /home/me/my.conf"

Se eu tentar executar o programa, tenho certeza que ele é usado sob os auspícios de strace , ele falha por causa do atraso adicional que strace apresenta.

strace -o /tmp/$(date +%s)_myprog.trace myprog

Como posso comprovar com segurança que myprog NÃO está lendo este arquivo?

    
por tarabyte 10.06.2017 / 19:37

1 resposta

8

Observar quais arquivos um processo abre ou quais processos abrem um arquivo parece um trabalho para sysdig .

Na página de exemplos sysdig

Basic opensnoop: snoop file opens as they occur

sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

Observe the I/O activity on all files named my.conf

sysdig -A -c echo_fds "fd.filename=my.conf"

Fom homem sysdig

NAME sysdig - the definitive system and process troubleshooting tool

SYNOPSIS sysdig [option]... [filter]

DESCRIPTION.

   sysdig is a tool for  system  troubleshooting,  analysis  and  explo‐
   ration.   It  can  be used to capture, filter and decode system calls
   and other OS events.
   sysdig can be both used to inspect live systems, or to generate trace
   files that can be analyzed at a later stage.

   sysdig  includes  a powerul filtering language, has customizable out‐
   put, and can be extended through Lua scripts, called chisels.
    
por 10.06.2017 / 20:14