【问题标题】:Linux usbmount: Determining Which Mounting Points Are Truly ActiveLinux usbmount:确定哪些挂载点真正处于活动状态
【发布时间】:2020-07-19 20:38:23
【问题描述】:

运行 Rasbian Buster Lite 无头无桌面,我正在使用 usbmount 自动挂载 USB 存储驱动器。 默认情况下,它将它们设置为 /media/usb0, /media/usb1, ... /media/usb7;但是,无论是否有任何 USB 驱动器,这些挂载点都存在。我什至可以在没有插入任何内容的情况下将文件写入这些文件夹并使用ls 查看它们。 我的问题是如何确定这些挂载点是否真实

背景:尝试编写一个脚本,将文件保存到 U 盘,无需任何用户干预,除了插入 U 盘并稍后用新的 U 盘换出。

Linux 新手,如果能提供任何额外的解释,将不胜感激。

谢谢!

【问题讨论】:

    标签: python linux bash shell usb


    【解决方案1】:

    当前活动的挂载点可以通过以下方式确定:

    #!/usr/bin/env bash
    
    while read -r real on mount _; do
        if  fdisk -l | grep -q "^$real"; then
            echo "$real is mounted on $mount"
        fi
    done < <(mount | grep "on /media")
    

    将上面的脚本保存到test.sh中,然后运行

    chmod +x test.sh
    ./test.sh
    

    【讨论】:

    • 谢谢菲利普!我只是尝试对此进行测试,如果我最近拉了一个没有卸载的 USB 驱动器,我有时会得到误报。有没有办法用脚本解决这个问题?我不希望检索驱动器的人必须携带笔记本电脑、SSH 进入并优雅地卸载旧驱动器。我需要让他们的参与像拔出旧驱动器并插入新驱动器一样简单,但如果我可以制作一个自动化脚本来修复这些误报,那就太好了。
    • 如果你看到/dev/sdb1 on /media/usb0,并且用户没有正确卸载就拔掉了电源,你可以检查/dev/sdb1是否在fdisk -l返回的列表中。
    • 好的,谢谢!有没有办法解析出这个很长的结果?我知道如何手动运行您的命令然后手动解释,但我对如何提取我需要自动解释答案的部分结果相当不满意。非常感谢
    • @rfii 请编辑您的 Q 以显示来自 mount | grep 'on /media'fdisk -l 的一小部分输出样本,其中一些样本 /dev/sdbNs 在第一个输出中并包括一个应该是的输出忽略。祝你好运。
    • 谢谢!尽管整个周末都在发生不存在的驱动器,而我一直在努力解决这个问题,当然我在过去两个小时内无法做到这一点,但会在我这样做时发布结果。感谢 Philippe 编辑的代码。我认为它有效,并将继续测试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多