次のリストをどのように取得できますか?
- 現在
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
10進数に変換- inodeでパス名を見つけます。
btrfs
(パス名が必要)ext4
(装備が必要、以下を通じて可能)/proc/<PID>/fdinfo/<FD> の `sdev` フィールドの解釈)
可能 lsof:特定の種類のファイルのみを一覧表示そしてa_inode
。
シェルスクリプトとしては遅すぎますgrep
。おそらく/proc情報へのシステムコールインターフェース。