我正在尝试获取有问题的 sshfs 挂载状态的通知
我尝试了两个 bash 脚本
while inotifywait -e modify /proc/mounts; do
echo "modified"
done
和
inotifywait -m /proc/mounts |
while read event; do
echo $event
done
为了测试,我正在运行以下序列,但这些脚本都没有响应。
stephen@asus:~/log$ sudo umount /mnt/lexar
stephen@asus:~/log$ sshfs michigan:/home/stephen/ /mnt/lexar
stephen@asus:~/log$ sudo umount /mnt/lexar
stephen@asus:~/log$ sshfs michigan:/home/stephen/ /mnt/lexar
stephen@asus:~/log$ grep lexar /proc/mounts
michigan:/home/stephen/ /mnt/lexar fuse.sshfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
stephen@asus:~/log$ sudo umount /mnt/lexar
stephen@asus:~/log$ grep lexar /proc/mounts
inotify
不适用于 proc 文件系统。尽管它们可能看起来像常规文件,但 proc 文件系统中的文件不包含任何静态数据——当您读取它们时,内核会即时组成数据。例如,/proc/mounts
=>/proc/self/mounts
的大小为 0,但是当你阅读它时,它神奇地恰好包含了一些东西。但是
/proc/self/mounts
并且/proc/self/mountinfo
是可轮询的——你可以select(2)
或poll(2)
在它上面为一个特殊的条件。根据proc(5)
手册页:[同样适用于
/proc/[pid]/mountinfo
]我认为没有任何方法可以从外壳中做到这一点。但是,您可以从 执行此操作
perl
:一个更有用的例子,它也显示了变化
/proc/self/mountinfo
: