パーティションのUUIDを取得して同じBash変数を定義するにはどうすればよいですか?

パーティションのUUIDを取得して同じBash変数を定義するにはどうすればよいですか?

パーティションのUUIDPART_IDと同じBash変数を定義したいと思います。/dev/sdb1必要な答えに最も近い結果は次のとおりです。

ls -ld /dev/disk/by-uuid/* | grep sdb1

私にとって、これは以下を提供します:

lrwxrwxrwx 1 root root 10 Mar 16 17:02 /dev/disk/by-uuid/d26c3e60-0cfb-4118-9dec-1f1819439790 -> ../../sdb1

これは私に許可されている設定値ではありませんPART_ID。代わりに、PART_IDと同じでなければならないのはですd26c3e60-0cfb-4118-9dec-1f1819439790

答え1

これはパーティション自体のUUIDではなく、パーティション内のファイルシステムのUUID(またはudevスクリプトにUUIDがあることを知っている他の構造化データ)です(すべてのパーティションスキームがパーティションにUUIDを提供するわけではありません)。また、見ることができますblkidとmdadm UUIDの違いは何ですか?

LinuxベースのシステムでFS UUIDを取得するためのいくつかのオプション:

fs_uuid=$(blkid -o value -s UUID /dev/sdb1)
fs_uuid=$(lsblk -no UUID /dev/sdb1)
fs_uuid=$(udevadm info -n sdb1 -q property | sed -n 's/^ID_FS_UUID=//p')
fs_uuid=$(find /dev/disk/by-uuid -lname '*/sdb1' -printf %f)

まず、スーパーユーザー権限または少なくともデバイス読み取り権限が必要な場合があります。

ファイルシステムがマウントされている場合は、次のものも使用できます。

fs_uuid=$(findmnt -fn -o UUID /dev/sdb1)

答え2

あなたはこれを行うことができます

PART_ID=$(blkid -o value -s UUID /dev/sdb1)

答え3

すべてをまとめたら(@ Mongrel、ありがとう!):

これは自動的に取得されます

DISK=$(mount | grep " $1 type" | awk '{print $1}')
PART_UUID=$(blkid -o value -s UUID ${DISK})
echo "DISK UUID ($1): ${PART_UUID}"

出力:

DISK UUID (/): cf9eb16f-c1fa-45d1-9764-b10f064cc993

関連情報