Existe uma maneira de saber quantos processos estão abrindo um arquivo?

1

Existe uma maneira de saber quantos processos estão atualmente abrindo um arquivo no Linux?

    
por Bionix1441 10.02.2017 / 15:38

3 respostas

3

lsof pode fazer isso:

lsof <filename>

por exemplo:

┌─[root@Fedora]─[~]─[02:39 pm]
└─[$]› lsof scripts/network_menu.sh
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
less      26419 root    4r   REG  253,1    67271 931810 scripts/network_menu.sh
network_m 26572 root  255r   REG  253,1    67271 931810 scripts/network_menu.sh

a primeira instância acima é que eu estou executando "menos" no arquivo como root, o segundo é o script sendo executado pelo root.

    
por 10.02.2017 / 15:42
2

Experimente com o comando lsof /path/filename

ele mostrará detalhes dos processos que estão usando o arquivo.

    
por 10.02.2017 / 15:41
2

lsof dirá quais processos têm o (s) arquivo (s) aberto (s) naquele momento, mas se você quiser ver quantos processos abrem arquivo (s) durante um período de tempo, você pode usar inotifywait ou inotifywatch .

inotifywait pode ser definido no modo de monitoramento para relatar continuamente os eventos nos arquivos especificados:

inotifywait -m -r /lib*

O inotifywatch pode fornecer um resumo dos eventos ao longo de um período de tempo:

inotifywatch -t 10 -r /lib*

Como você solicitou processos para abrir arquivos, você pode adicionar a opção -e open para limitar a saída a mostrar apenas eventos OPEN:

inotifywait -e open -m -r /lib*

    
por 10.02.2017 / 20:27