Проверьте, подключен ли конкретный внешний диск

9

Как я могу проверить с помощью команды оболочки, подключен ли конкретный внешний диск? (по метке или идентификатору устройства)

Jeno
источник

Ответы:

9

Чтобы проверить, подключен ли конкретное устройство можно использовать grepс -qвозможностью поиска вывода lsusbили lsblk, например ,

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

Оба могут использоваться независимо от того, установлено ли устройство.

Десерт
источник
Для навесных перегородок lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
Ноберт
Конечно, я использовал UUID, который вы предоставили :)
N0rbert
9

/dev/disk/содержит следующие каталоги, которые содержат символическую ссылку на реальные устройства. Эти ссылки динамически создаются и удаляются udev, поэтому они всегда актуальны:

  • по-ид
  • по-partlabel
  • по-partuuid
  • по-пути
  • по-UUID

Поэтому проверка на наличие символической ссылки будет использовать меньше ресурсов.

Вот пример проверки наличия диска с использованием его серийного номера:

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

В моем скрипте резервного копирования я даже не проверяю наличие диска, я только проверяю результат mountкоманды следующим образом:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
ПИМ
источник
2

lsusb для просмотра списка подключенных USB-устройств, если ваш внешний диск подключен через интерфейс USB.

lsblk -f перечислить блочные устройства, UUID и их точки монтирования, поскольку ваш внешний диск является блочным устройством.

arryph
источник
1
@ N0rbert зачем вам -fперечислять точки монтирования? Выходные данные по умолчанию перечисляют их так или иначе
muru
0

findfsсделано для этого. Вы можете искать по:

  • FS label

    findfs LABEL="Ubuntu" &>/dev/null
    
  • FS UUID

    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
    

Поиски чувствительны к регистру. Если несколько разделов совпадают, отображается только последний.

user285259
источник