监控已安装 USB 密钥的脚本

监控已安装 USB 密钥的脚本

我的问题

你好,

我目前正在做一个项目来监控复制到 usb 密钥的文件。我正在使用 udev 来启动 inotify 脚本。

我目前正在努力查找何时安装 USB 密钥并获取路径(/media/user/<usb-name>)。最困难的部分是,在 Ubuntu 22.04 上,插入计算机时密钥不会自动安装。所以我不得不等待用户安装它。(使用命令mountNautilus通过单击它来安装。)

因此脚本正在运行:

while true; do
    local mountpoint=$(findmnt -rn -S "$deviceNode" -o TARGET)
    # devide node is /dev/sda1

    if [[ -n "$mountpoint" ]]; then
        echo "USB device $deviceNode is mounted at $mountpoint" >> "$logFile"
    else
        echo "USB device $deviceNode is not mounted" >> "$logFile"
    fi
    ((counter++))
    echo "Iteration: $counter" >> "$logFile"
    sleep 3
done

我的问题:

问题是脚本在 2 次迭代后停止。如果 sleep 为 1,则在 4 次迭代后停止。我不明白为什么。有人知道吗?

但我的方法可能不是最好的。还有其他方法可以实现我想要的效果吗?


脚本

/etc/udev/rules.d/99-usb-stick.rules

ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", RUN+="/opt/data/wrapper.sh %N"

/opt/data/wrapper.sh

#!/bin/bash
# wrapper.sh

# Run the actual script in the background
/opt/data/test.sh $1 &

我使用这种方法是因为 udev 在程序运行时会暂停如此处所述,部分高级主题

/opt/data/test.sh

#!/bin/bash
# test.sh

# All my code goes here

我希望我已经表达清楚了,这是我的第一篇帖子。

谢谢。

相关内容