Periksa apakah disk eksternal tertentu terhubung

9

Bagaimana saya bisa memeriksa melalui perintah shell jika disk eksternal tertentu terhubung? (dengan label atau id perangkat)

Jeno
sumber

Jawaban:

9

Untuk menguji apakah perangkat tertentu tersambung Anda dapat menggunakan grepdengan -qpilihan untuk mencari output dari lsusbatau lsblk, misalnya

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

atau dengan if:

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

Keduanya dapat digunakan tidak masalah apakah perangkat sudah terpasang.

pencuci mulut
sumber
Untuk partisi yang dipasang - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert
Tentu saja, saya menggunakan UUID yang Anda berikan :)
N0rbert
9

/dev/disk/berisi direktori berikut, yang berisi tautan simbolis ke perangkat nyata. Tautan ini dibuat dan dihapus secara dinamis oleh udev, sehingga selalu diperbarui:

  • oleh-id
  • by-partlabel
  • oleh-partuuid
  • jalan simpangan
  • by-uuid

Jadi memeriksa keberadaan symlink akan menggunakan lebih sedikit sumber daya.

Berikut adalah contoh pengujian keberadaan disk menggunakan nomor seri:

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

Di skrip cadangan saya, saya bahkan tidak memeriksa keberadaan disk, saya hanya memeriksa hasil dari mountperintah seperti ini:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
pim
sumber
2

lsusb untuk daftar perangkat USB yang terhubung jika disk eksternal Anda terhubung melalui antarmuka USB.

lsblk -f untuk mencantumkan perangkat blok, UUID dan titik pemasangannya karena disk eksternal Anda adalah perangkat blok.

arryph
sumber
1
@ N0rbert mengapa Anda perlu -fmendaftar poin mount? Output default tetap mendaftarkan mereka
muru
0

findfsdibuat untuk ini. Anda dapat mencari berdasarkan:

  • Label FS

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

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

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

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

Pencarian bersifat case-sensitive. Jika beberapa partisi cocok, hanya yang terakhir yang ditampilkan.

pengguna285259
sumber