
ローカル HDD か USB キーかはどうすればわかりますか? ルート権限なしでこれを行う方法をお勧めします。/dev/sdX
はい、udevadm
とても助かりました。
ローカル HDD の場合:
udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata
USBキーの場合:
udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb
答え1
ルート権限なしで確認する方法はいくつかありますが、その多くはトリッキー/ハッキング的です。
使用方法/dev/disk/by-id
:
find /dev/disk/by-id/ -lname '*sdX'
のような応答が返ってきたら/dev/disk/by-id/usb-blah-blah-blah
、それは USB ディスクです。その他のプレフィックスにはata
、、、、などdm
があります。memstick
scsi
使用しても/dev/disk/by-path
大きな違いはありません:
find /dev/disk/by-path/ -lname '*sdX'
のような表示になります/dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0
。これは、ディスクにつながるデバイス パスを示しています。この場合、おおよそのパスは PCI → USB → ディスクです ( に注意してください-usb-
)。
udev を使用します (私は Debian を実行しています。私のは にあり、私の には存在しませんudevadm
。あなたの は 上または外のどこかにある可能性があります):/sbin
$PATH
$PATH
/sbin/udevadm info --query=all --name=sdX | grep ID_BUS
デバイスが接続されているバス タイプを取得します。| grep ID_BUS
情報を完全にリストするには を削除します ( を追加する必要がある場合があります|less
)。
インストールしている場合はlshw
、Huygensの回答5月以下も動作します:
lshw -class disk -class storage | less
そして、ディスクの出力を見てください。 でless
、/sdXを試して、その前の行を見てください。bus info
最初の行には とだけ書かれていますscsi@…
が、その数行前の行にはもっと詳しい説明があります。しかし、すべきこれをスーパーユーザーとして実行すると、適切ではない可能性があります。(症状: 私が試したラップトップでは、SATA ディスクはリストされましたが、USB ディスクはリストされませんでした。sudo
両方をリストして実行しています)
これらよりも直接的なものも、そうでないものも、他にもあります。
答え2
(デバイスのトランスポートタイプ)lsblk
を報告するために使用できます:TRAN
lsblk -do name,tran
NAME TRAN
sda sata
sdb sata
sdd usb
ここで-d
、 または--nodeps
はスレーブを印刷しないことを意味し、-o name,tran
または は--output name,tran
デバイス名とデバイス トランスポート タイプのみをリストすることを意味します。出力列のリストに、どのデバイスが取り外し可能か ( if )rm
を確認するための追加情報:1
true
lsblk --nodeps --output NAME,TRAN,RM
NAME TRAN RM
sda sata 0
sdb sata 0
sdd usb 1
または、-n
ヘッダーを削除します。たとえば、特定のドライブのトランスポート タイプのみを印刷します。
lsblk -ndo tran /dev/sdb
sata
の最新バージョンlsblk
(2.27
およびそれ以降)はJSON
出力をサポートしているので、次のようなこともできることに注意してください。
lsblk -Jdo name,tran | jq -r '.blockdevices[] | select(.tran=="usb") | .name'
バスに接続されているブロックデバイスのみを一覧表示しますUSB
。
答え3
解決策はわかっていますが、残念ながらルート権限が必要です。とにかく、それでも役に立つかもしれません:
sudo lshw -class disk -class storage
各デバイスについて、論理名 (例: /dev/sda
) とバス情報が出力されます。USB デバイスの場合は、「usb@1:2」のようになります。
サンプル出力:
[...]
*-storage
description: SATA controller
physical id: d
bus info: pci@0000:00:0d.0
configuration: driver=ahci latency=64
[...]
*-disk:0
description: ATA Disk
physical id: 0
bus info: scsi@2:0.0.0
logical name: /dev/sda
[...]
*-scsi
physical id: 3
bus info: usb@1:2
configuration: driver=usb-storage
*-disk
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@6:0.0.0
logical name: /dev/sdc
[...]
答え4
の値を読み取ります/sys/block/sdX/removable
。
例えば:
$ cat /sys/block/sda/removable
0
$ cat /sys/block/sdc/removable
1
/dev/sdc
USB キー (SD カードまたはその他のリムーバブル メディアでも可)。