현재 inotify 시계 나열(경로 이름, PID)

현재 inotify 시계 나열(경로 이름, PID)

다음 목록을 어떻게 얻을 수 있나요?

  • 현재 inotify, 및 에서 모니터링 하고 있는 경로 이름
  • 프로세스의 PID를 모니터링하세요

찾았기 때문에 묻는다syncthing시계 inotify는 내 디스크가 마운트 해제되는 것을 방지합니다.

아래에서 볼 수 있듯이 목록에는 lsof아무것도 나타나지 않습니다 fuser.

내 추측은 꽤 좋습니다 syncthing... 다음과 같은 이유로 디스크가 마운트 해제되지 않을 경우 향후 추측을 어떻게 제거합니까 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

답변1

아마도 fdinfo시계의 fd가 유용할 것입니다.

$ 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

이는 sdev의 출력에 표시된 것처럼 주:부 장치 번호 조합으로 나타납니다 lsblk. 예를 들면 다음과 같습니다.

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

(저는 모니터를 합니다 /snap/core/2462.)

my /dev/sda1which is 의 8:1경우 출력은 다음과 같습니다.

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

모니터링 중인 특정 디렉터리나 파일이 목록에 없더라도 이것만으로도 제거를 방해하는 요소를 알아내는 데 충분할 수 있습니다.

답변2

(미완성 답변)

감사해요무루의 대답부팅합니다.

다음 정보를 사용하십시오 /proc/[pid]/fdinfo/[fd#].

가능한 lsof: 특정 유형의 파일만 나열그리고 a_inode.

쉘 스크립트로서는 너무 느립니다 grep. 아마도/proc 정보에 대한 시스템 호출 인터페이스.

관련 정보