Lista de relógios inotify atuais (nome do caminho, PID)

5

Como obtenho uma lista de:

  • Pathnames atualmente sendo assistidos por inotify e
  • PID do processo assistindo

Eu pergunto porque descobri que os syncthing watches inotify estavam impedindo que meu disco fosse desmontado.

Como pode ser visto abaixo, nada aparece nas listagens lsof ou fuser .

Eu adivinhei bem com syncthing ... Como posso remover a adivinhação no futuro se um disco não for desmontado devido a inotify ?

# umount /media/backup
umount: /media/backup: target is busy.
# lsof +f -- /media/backup/
# echo $?
1
# fuser -vmM /media/backup/
                     USER        PID ACCESS COMMAND
/media/backup:       root     kernel mount /media/backup
# systemctl stop syncthing@ravi
# umount /media/backup
# echo $?
0
    
por Tom Hale 18.08.2017 / 10:03

2 respostas

4

Talvez o fdinfo para o fd do relógio possa ser útil:

$ readlink /proc/$(pgrep inotify)/fd/3
anon_inode:inotify
$ cat /proc/$(pgrep inotify)/fdinfo/3
pos:    0
flags:  00
mnt_id: 11
inotify wd:1 ino:357a sdev:700000 mask:fff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7a35000000000000

O sdev parece ser a combinação principal: menor número de dispositivo, como visto na saída de lsblk , por exemplo:

$ lsblk | grep 7
loop0    7:0    0  80.5M  1 loop /snap/core/2462

(Eu estava realmente monitorando /snap/core/2462 .)

Para o meu /dev/sda1 , que é 8:1 , a saída ficou assim:

pos:    0
flags:  00
mnt_id: 11
inotify wd:1 ino:aae1b sdev:800001 mask:fff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:1bae0a0038e16969

Isso deve ser suficiente para descobrir o que está bloqueando a desmontagem, mesmo que os diretórios ou arquivos específicos que estão sendo observados não estejam listados.

    
por 18.08.2017 / 10:24
1

(Resposta WIP)

Graças a resposta do muru para o kickstart.

Usando as informações em /proc/[pid]/fdinfo/[fd#] :

Possivelmente lsof: liste apenas arquivos de um tipo específico com a_inode .

Demasiado lento como um script de shell com todo o grep ing. Talvez interface de chamada do sistema para informações de / proc .

    
por 18.08.2017 / 15:04