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


9

Як я можу перевірити команду shell, чи підключений певний зовнішній диск? (за етикеткою чи ідентифікатором пристрою)

Відповіді:


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.
N0rbert

Звичайно, я використав UUID, який ви надали :)
N0rbert

9

/dev/disk/містить наступні каталоги, які містять символічне посилання на реальні пристрої. Ці посилання динамічно створюються та видаляються udev, тому вони завжди актуальні:

  • по-ід
  • побічна мітка
  • по-партійному
  • обхідним шляхом
  • by-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 та їх точки монтажу, оскільки ваш зовнішній диск є блоковим пристроєм.


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 label

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

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

Пошукові записи залежать від регістру. Якщо кілька розділів збігаються, відображається лише останній.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.