检查特定外部磁盘是否已连接

检查特定外部磁盘是否已连接

如何通过 shell 命令检查特定外部磁盘是否已连接?(通过标签或设备 ID)

答案1

要测试特定设备是否已连接,您可以使用grep选项来搜索或-q的输出,例如lsusblsblk

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no

devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no

或者if

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
  echo yes
else
  echo no
fi

无论设备是否安装,都可以使用。

答案2

/dev/disk/包含以下目录,其中包含指向真实设备的符号链接。这些链接由 动态创建和删除udev,因此它们始终是最新的:

  • 按 ID
  • 按部分标签
  • 部分 uid
  • 旁路
  • 按 uuid

因此检查符号链接的存在将使用更少的资源。

下面是使用序列号测试磁盘存在的示例:

test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no

在我的备份脚本中我甚至不检查磁盘存在,我只检查mount如下命令的结果:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1

答案3

lsusb如果您的外部磁盘通过 USB 接口连接,则列出连接的 USB 设备。

lsblk -f列出块设备、UUID 及其挂载点,因为您的外部磁盘是块设备。

答案4

findfs是为此而制作的。您可以按以下方式搜索:

  • FS 标签

    findfs LABEL="Ubuntu" &>/dev/null
    
  • 文件系统唯一标识

    findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
    
  • GPT 标签

    findfs PARTLABEL="EFI system partition" &>/dev/null
    
  • GPT uuid

    findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
    

搜索区分大小写。如果多个分区匹配,则仅显示最后一个分区。

相关内容