Bagaimana saya bisa tahu apakah itu HDD lokal atau kunci USB? Saya lebih suka cara melakukan ini tanpa hak root./dev/sdX
Oke, udevadm
banyak membantu:
Untuk HDD lokal:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
Untuk kunci USB:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
bash
hardware
hard-disk
administration
bunga aster
sumber
sumber
Jawaban:
Ada beberapa cara untuk mengetahuinya tanpa root privilege, banyak dari mereka tricky / hacky:
Menggunakan
/dev/disk/by-id
:Jika ini merespons dengan sesuatu seperti
/dev/disk/by-id/usb-blah-blah-blah
, maka itu adalah disk USB. Prefiks lainnya termasukata
,dm
,memstick
,scsi
, dllPenggunaannya
/dev/disk/by-path
tidak jauh berbeda:Anda akan mendapatkan sesuatu seperti
/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0
. Ini menunjukkan jalur perangkat yang mengarah ke disk. Dalam kasus ini, jalur kasar adalah PCI → USB → disk. (perhatikan-usb-
).Menggunakan udev (saya menjalankan Debian. My
udevadm
berada di/sbin
mana bukan pada saya$PATH
- milik Anda mungkin ada di tempat lain, hidup atau mati$PATH
):Anda akan mendapatkan jenis bus tempat perangkat aktif. Hapus
| grep ID_BUS
untuk daftar lengkap informasi (Anda mungkin perlu menambahkan|less
).Jika Anda telah
lshw
menginstal, jawaban Huygens juga dapat berfungsi:Dan lihat output untuk disk Anda. Di
less
, coba /sdX dan lihat baris sebelumnyabus info
- yang pertama hanya akan mengatakanscsi@…
, tetapi beberapa baris sebelum akan lebih mencerahkan. Namun, Anda benar - benar harus menjalankan ini sebagai superuser sehingga mungkin tidak cocok. (Gejala: pada laptop saya mencobanya, terdaftar disk SATA tetapi tidak yang USB - berjalan dengansudo
terdaftar keduanya)Ada yang lain juga, lebih atau kurang langsung daripada yang ini.
sumber
esatap
?Saya tahu solusinya, tetapi, sayangnya, ini membutuhkan root privilege. Bagaimanapun, Anda mungkin masih menemukan itu berguna:
Untuk setiap perangkat itu akan mencetak nama logis (misalnya,
/dev/sda
) dan info bus, yang dalam hal perangkat USB akan menjadi sesuatu seperti 'usb @ 1: 2'.Output sampel:
sumber
Anda bisa menggunakan
lsblk
:di mana
-d
atau--nodeps
cara tidak mencetak budak dan-o name,tran
atau--output name,tran
berarti hanya mencantumkan nama perangkat dan jenis transportasi perangkat. Tambahkanrm
ke daftar kolom output untuk melihat perangkat mana yang dapat dilepas (1
jikatrue
):sumber
Ini tidak memerlukan hak akses root (tetapi banyak dari perintah ini menggunakan dan bergantung pada bashism, sehingga mereka tidak akan bekerja di semua shell yang sesuai dengan POSIX):
Ada cara cepat untuk bertanya tentang :
sdX
File yang sangat menarik adalah
capability
. Di Debian saya, saya punyagenhd.h
file, jadi:Sama sekali, hanya untuk mengetahui apakah bendera
removable
disetel:begitu
bekerja dengan menguji apakah
capability
nilai (yang 52 dalamsda
contoh saya , di atas) memiliki1
set bit (yaitu, apakah itu angka ganjil).Tapi Linux merender semua flag
/sys
, jadi meminta/sys/block/sdX/removable
jauh lebih mudah! ;-)Jadi kunci USB bisa
removable
, tapi karena ada banyak dilepas perangkat, saya lebih suka untuk memastikan bahwa ukuran medium lebih besar dari 0 (seperti nampan CD-ROM diturunkan, untuk sampel) dan bahwa perangkat ini tidak di gunakan: Dalam menonton yangsdX/trace/enable
tidak terikat:Nota: Semua ini diuji dengan baik pada bash v4.2 +.
Di bawah bash , Anda dapat menggunakan cara yang sangat cepat dan efisien ini:
Pada sistem saya, ada 4 kunci USB, tetapi salah satu dari mereka (
sde
) sudah terpasang, sehingga perintah sebelumnya output:Skrip saya:
Ada sedikit fungsi bash yang saya tulis untuk menginstal Debian Live yang ditingkatkan.
# Bagian pertama hanya membuat ukuran yang bisa dibaca manusia. Fungsi dimulai di sana.
Ini memberikan jawaban, sebagai array , ke variabel yang diberikan sebagai argumen pertama atau ke variabel
$REPLY
:(Bidang terakhir mungkin berisi spasi.)
sumber
…,device/{model,type,vendor,uevent}
? (2) Bisakah Anda jelaskan perintah GENHD Anda dan perintah "lacak / aktifkan"? (3)[ $(( $(< $file ) & 1 )) -ne 0 ]
Tes Anda dapat disederhanakan (disingkat) menjadi(( $(< $file ) & 1 ))
./usr/src/*/include/linux
. Cobased -ne 's/#define.*GENHD_FL_\([A-Z0-9_]*\)[ \t]*\([0-9]*\) \?.*$/GENHD_FLAGS[\2]="\1"/p;' /usr/src/*/include/linux/genhd.h
. (3) Ya.Saya sarankan hanya menggunakan
hdparm
ataulshw
(yang Anda mungkin perlu menginstal), dan menggunakansudo
untuk menjalankannya sebagai root.semua harus memberi Anda informasi.
sumber
hdparm -i /dev/sda /dev/sda: HDIO_DRIVE_CMD(identify) failed: Invalid exchange HDIO_GET_IDENTITY failed: Invalid argument
Cukup baca nilai
/sys/block/sdX/removable
.Sebagai contoh:
/dev/sdc
adalah kunci USB (bisa berupa kartu SD atau media yang dapat dilepas lainnya).sumber
dmesg
adalah metode termudah:( menjadi nama perangkat Anda, misalnya, )
sdX
sda
Dari perintah di atas, Anda akan melihat yang berikut:
sumber
dmesg
membaca buffer pesan melingkar kernel sehingga solusi ini hanya akan bekerja relatif baru setelah rebootAnda dapat menggunakan perintah di bawah ini untuk mendapatkan node perangkat SD, USB, dan SATA.
sumber
/dev/sdX
, bagaimana saya bisa tahu apakah itu HDD lokal atau kunci USB?” Tolong jelaskan bagaimana OP dapat menggunakan perintah Anda untuk membuat itu penentuan. (2) Kami lebih suka jawaban yang memberi perintah dan menjelaskannya daripada jawaban yang hanya memberikan perintah. Tolong jelaskan apa yang Anda lakukan. Tolong jangan menanggapi dalam komentar; edit jawaban Anda untuk membuatnya lebih jelas dan lebih lengkap. … (Lanjutan)awk
adalah alat yang sangat kuat. Banyak pemula memposting jawaban yang melakukangrep
dan menyalurkan hasilnyaawk
. Ini jarang diperlukan;awk
dapat melakukan pencocokan pola dan dapat memilih input yang diinginkan tanpa bantuan darigrep
. Anda memiliki pipa duagrep
perintah, disalurkan keawk
, dan kemudian perintah keduaawk
. Ini bisa sangat disederhanakan; tolong coba. (4) Juga, untuk kejelasan, Anda mungkin ingin mengubah`…`
untuk$(…)
- lihat ini , ini , dan ini .Saya malas, inxi memberi tahu saya ini dengan mudah:
Saya percaya ini juga memberi tahu saya apakah itu firewire dan mungkin satu jenis lainnya, tapi saya harus mengeceknya, belum pernah menggunakan jenis itu untuk sementara waktu.
Ini juga memberitahu saya menggunakan -p jika partisi jarak jauh, seperti samba atau nfs mounts.
sumber
Setelah Anda mencolokkan perangkat USB, jalankan
dmesg
di jendela konsol. Anda akan diberikan beberapa petunjuk.Sebagai contoh ia akan mengatakan sesuatu di sepanjang baris "Perangkat terpasang, penyimpanan massal / dev / sdd".
sumber