다음 목록을 어떻게 얻을 수 있나요?
- 현재
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/sda1
which 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#]
.
- 또는
mnt_id
인덱스 로 사용할 마운트 지점 경로 이름과 장치를 가져옵니다./proc/[pid]/mountinfo
전역 마운트 정보를 사용할 수 있음 ino
십진수로 변환- inode에서 경로 이름을 찾으십시오.
btrfs
(경로 이름 필요)ext4
(장비 필요, 다음을 통해 가능)/proc/<PID>/fdinfo/<FD>의 `sdev` 필드 해석)
가능한 lsof: 특정 유형의 파일만 나열그리고 a_inode
.
쉘 스크립트로서는 너무 느립니다 grep
. 아마도/proc 정보에 대한 시스템 호출 인터페이스.