自動的にマウントされないいくつかのUSBドライブを接続するとします。どのデバイスファイルがどの物理デバイスに属しているのかを調べるにはどうすればよいので、たとえばマウントできますか?
私はMac OS Xを実行していますが、すべての(または少なくとも最も人気のある)Unixシステムで動作する答えが好きです。過去にLinuxでこの問題が発生しました。
自動的にマウントされないいくつかのUSBドライブを接続するとします。どのデバイスファイルがどの物理デバイスに属しているのかを調べるにはどうすればよいので、たとえばマウントできますか?
私はMac OS Xを実行していますが、すべての(または少なくとも最も人気のある)Unixシステムで動作する答えが好きです。過去にLinuxでこの問題が発生しました。
回答:
有用な情報のクエリを取得できますudev
(それを使用するシステムで-ほとんどすべてのデスクトップタイプのLinux)。たとえば、どの接続ドライブがに関連付けられているかを知りたい場合は/dev/sdb
、次を使用できます。
udevadm info --query=property --name=sdb
シリアル(ID_SERIAL_SHORT)など、そのデバイスのプロパティのリストが表示されます。その情報があれば、出力を見てlsusb -v
、製造元や製品名などを見つけることができます。
これを行うための短いパスは
udevadm info --query=property --name=sdb | grep "\(MODEL_ID\|VENDOR_ID\)"
$ID_VENDOR_ID:$ID_MODEL_ID
のはるかに短い出力で一致する行を参照してください lsusb
。
別の便利なオプションはudevadm monitor
です。デバイスを接続する時点でどのデバイスノードが作成されたかを知りたい場合に使用します。だから最初の実行
udevadm monitor --udev --subsystem-match=block
そして、デバイスを接続します。各出力行の最後に、検出されたブロックデバイス(ディスク/パーティション)のデバイス名が表示されます。
以下は、.bashrc
(または.zshrc
)に入れることができる関数です。
listusbdisks() { [["x $ 1" == "xv"]] && shift && local VERBOSE = -v $ {@-/ dev / sd?}のdskの場合 行う / sbin / udevadm info --query = path --name = "$ dsk" | grep --colour = auto -q usb || 継続する echo "===== device $ dsk is:" (eval $(/ sbin / udevadm info --query = property --name = "$ dsk" | grep "\(MODEL \ | VENDOR \)_ ID") ["$ ID_VENDOR_ID:$ ID_MODEL_ID" == ":"] && echo "不明" || \ lsusb $ VERBOSE -d "$ ID_VENDOR_ID:$ ID_MODEL_ID" ) grep -q "$ dsk" / proc / mounts && echo "-----デバイスはマウントされています----" エコー やった }
次のように使用します。
listusbdisks
-すべての/dev/sdx
デバイスを認識するため。listusbdisks sdb
またはlistusbdisks /dev/sdb
またはlistusbdisks sdb sdc
-特定のデバイスに関する情報のみを取得します。listusbdisks -v [optional devices as above]
-の詳細な出力を表示する lsusb
[編集]:多くのデバイスへのクエリ、マウントのチェック、の冗長性の制御などの機能を追加しましたlsusb
。
udev
。
lsusb
もオプションのプログラムです。しかし、両方とも非常に一般的です。
dmesg
です。ただし、デバイスが既に接続されている場合、および最初のデバイスの後にさらにデバイスが接続されている場合、これは役に立ちません。:)
すべてのUnixに関して、これが実現可能だとは思いません。
今日の通常の外部バスは、IDEのようにポートに固定の番号付けスキームを使用しません。したがって、必要なマッピングの残りのデータソースは、ドライブの製造元名、シリアル番号、またはパーティションのUIDのみです。
メーカー名は、特定のマシンで必ずしも一意ではありません(同じシリーズの2つの外部ドライブを接続すると仮定します-それらは同一に識別します)。シリアル番号は、パーティションUIDのように「外部からは見えません」。
だから、私が考えることができる唯一の普遍的な解決策については、物理ドライブにシリアル番号のラベルを付け、UDEVが利用可能であれば、rozcietrzewiaczの回答にあるudevadmコマンドを使用することです。