先週、USBがSDCであると想定するスクリプトがあり、このコマンドを使用していました。
usb_path=`lsblk | grep sdc1 | awk '{print $7}'`
しかし、戻ってみると、スティックは空でした。スティックの名前が sdb だったからです。では、スティックの名前によって何が変わるのでしょうか? sdc になったときは他のディスクは接続されておらず、sdb になった今は他のディスクは接続されていません。そのため、私が確認できた唯一の違いは時間ですが、それは馬鹿げているように思えます。ああ、先週と同じ USB スティックです。
答え1
/の中の文字b
/はカウンターです。c
sdb
sdc
最初に検出されたディスクには がsda
、2 番目にはsdb
が、というように割り当てられます。
たとえば、USB スティックを差し込むときに一時的に接続が緩むと、文字がスキップされることがあります。最初に USB スティックは になり、その後接続が切断されて再確立され、まだ解放されていないため にsdb
なります。sdc
sdb
同じデバイスが毎回同じ名前を取得するとは限らないため、Ubuntu には、ディスク上のファイルシステムの ID にバインドされたディスクへのシンボリック リンクを含むディレクトリがあります。
/dev/disk/by-uuid/
接続するすべてのディスク上のすべてのパーティションがこのディレクトリにエントリを取得し、同じパーティションでは常に同じままになります。
USB スティックの ID ではなく、特定の USB ポートに接続されている USB スティックにアクセスする場合は、 のエントリを使用できます/dev/disk/by-path
。
lsblk
特定のデバイスに関する情報が必要な場合は、引数を受け入れます。代わりに、たとえばまたはをlsblk | grep …
使用できます。lsblk /dev/disk/by-id/1234-5678
lsblk /dev/disk/by-path/pci-0000:00:2.0-usb-0:1:1.0-scsi-0:0:0:0