Kiểm tra nếu đĩa bên ngoài cụ thể được kết nối


9

Làm thế nào tôi có thể kiểm tra thông qua lệnh shell nếu một đĩa bên ngoài cụ thể được kết nối? (theo nhãn hoặc id thiết bị)

Câu trả lời:


9

Để kiểm tra xem một thiết bị cụ thể có được kết nối hay không, bạn có thể sử dụng grepvới -qtùy chọn để tìm kiếm đầu ra của lsusb, hoặc lsblk, ví dụ

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

hoặc với if:

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

Cả hai có thể được sử dụng cho dù thiết bị được gắn.


Đối với phân vùng gắn kết - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert

Tất nhiên, tôi đã sử dụng UUID mà bạn cung cấp :)
N0rbert

9

/dev/disk/chứa các thư mục sau, chứa liên kết tượng trưng đến các thiết bị thực. Các liên kết này được tạo và xóa một cách linh hoạt bởi udevvì vậy chúng luôn được cập nhật:

  • by-id
  • by-partlabel
  • by-partuuid
  • đường đi
  • tạm biệt

Vì vậy, kiểm tra sự tồn tại của symlink sẽ sử dụng ít tài nguyên hơn.

Dưới đây là một ví dụ kiểm tra sự hiện diện của đĩa bằng số sê-ri của nó:

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

Trong tập lệnh sao lưu của tôi, tôi thậm chí không kiểm tra sự hiện diện của đĩa, tôi chỉ kiểm tra kết quả của mountlệnh như thế này:

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

2

lsusb để liệt kê thiết bị usb được kết nối nếu đĩa ngoài của bạn được kết nối qua giao diện USB.

lsblk -f để liệt kê các thiết bị khối, UUID và các điểm gắn kết của chúng vì đĩa bên ngoài của bạn là một thiết bị khối.


1
@ N0rbert tại sao bạn cần -fliệt kê các điểm gắn kết? Đầu ra mặc định liệt kê chúng bằng mọi cách
muru

0

findfsđược làm cho điều này. Bạn có thể tìm kiếm bằng cách:

  • Nhãn FS

    findfs LABEL="Ubuntu" &>/dev/null
    
  • Uuid

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

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

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

Tìm kiếm là trường hợp nhạy cảm. Nếu nhiều phân vùng khớp, chỉ có cái cuối cùng được hiển thị.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.