特定の外部ディスクが接続されているかどうかを確認します


9

特定の外部ディスクが接続されているかどうかをシェルコマンドで確認するにはどうすればよいですか?(ラベルまたはデバイスID)

回答:


9

特定のデバイスは、あなたが使用することができます接続されているかどうかをテストするために、grep-qの出力を検索するためのオプションlsusblsblk、例えば

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

またはif

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

デバイスが搭載されているかどうかに関係なく、どちらも使用できます。


マウントされたパーティションの場合- lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
N0rbert 2017年

もちろん、私はあなたが提供したUUIDを使用しました:)
N0rbert

9

/dev/disk/実際のデバイスへのシンボリックリンクを含む次のディレクトリが含まれています。このリンクはによって動的に作成および削除されるudevため、常に最新のものになります。

  • by-id
  • 部品ラベル別
  • パートごと
  • バイパス
  • by-uuid

そのため、シンボリックリンクの存在を確認すると、使用するリソースが少なくなります。

次に、シリアル番号を使用してディスクの存在をテストする例を示します。

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

私のバックアップスクリプトでは、ディスクの存在を確認していません。mount次のようなコマンドの結果のみを確認しています。

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1

2

lsusb 外付けディスクがUSBインターフェイスを介して接続されている場合に、接続されているUSBデバイスを一覧表示します。

lsblk -f 外部ディスクがブロックデバイスであるため、ブロックデバイス、UUID、およびそれらのマウントポイントを一覧表示します。


1
@ N0rbertなぜ-fマウントポイントをリストする必要があるのですか?とにかくデフォルトの出力はそれらをリストします
muru

0

findfsこれのために作られました。で検索できます:

  • FSラベル

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

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

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

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

検索では大文字と小文字が区別されます。複数のパーティションが一致する場合、最後のパーティションのみが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.