【 blkid 】コマンド――ブロックデバイスの属性を表示するLinux基本コマンドTips(182)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、HDDやUSBメモリなどのブロックデバイスの属性を表示する「blkid」コマンドです。

» 2018年02月09日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、HDDやUSBメモリなどのブロックデバイスを探し出し、属性を表示する「blkid」コマンドです。

blkidコマンドとは?

 「blkid」は、現在利用できるブロックデバイス、または指定した条件に合うブロックデバイスの情報を表示するコマンドです ※1。UUIDやファイルシステムの種類をブロックデバイスごとに表示します ※2。

 ユーザーの権限によって表示内容が異なる場合があります。最新情報の取得にはroot権限が必要です(連載第68回)。

 blkidと似たような機能を備えたコマンドが幾つかあります。「lsblk」(連載第180回)はブロックデバイスを一覧表示します。「findfs」(連載第181回)はラベルや識別子(UUID)を用いて検索、表示するコマンドです。どちらも一般ユーザー権限で情報を取得できます。

※1 LinuxではHDDやモデムなどの装置を、/dev/sdaのようなデバイスファイルとして管理している。デバイスファイルのうち、アクセス時に文字単位ではなく、ブロック単位でデータを転送するものを「ブロックデバイス」と呼ぶ。HDDやCD-ROMなどがブロックデバイスだ。「ls -al /dev」を実行したとき、ブロックデバイスは先頭に「b」と表示される。
※2 UUIDはシステムがランダムに自動生成するほぼ確実に一意な数値である。長さは128ビット。





blkidコマンドの書式

blkid [オプション] [デバイス ……]

※[ ]は省略可能な引数を示しています。rootユーザーでの実行を推奨。




blkidの主なオプション(表示対象関連)

短いオプション 意味
-c ファイル blkidが参照するキャッシュファイルを指定する(/run/blkid/blkid.tab、または/etc/blkid.tabがデフォルトのキャッシュファイル)。キャッシュを無視して表示したい場合は/dev/nullを指定する
-g キャッシュから、既に存在しないデバイスなどの情報を削除する(garbage collection)
-o 書式 出力時の書式を指定する。指定可能なのはfull(全て表示、デフォルト)、value(値のみ)、device(デバイス名のみ)、list(固定幅のフォーマットで表示)、udev(環境変数ID_FS_UUIDなどを設定する際の書式で表示)など
-s タグ 指定したタグ(TYPE、UUID、LABEL)のみを表示する。NONEを指定すると何も表示せずキャッシュを更新する
-d 非表示文字をエンコードしない
-t タグ名=値 指定した「タグ名=値」にマッチするデバイスだけを表示する。タグ名としてTYPE、LABEL、UUIDなどを指定可能
-l -tオプション使用時、マッチするデバイスを1つ見つけたら終了する(UUIDで探す場合の効率がよくなる)
-L ラベル 指定したラベルに該当するデバイスの名前を表示
-U 識別子 指定した識別子(UUID)に該当するデバイスの名前を表示
-p デバイス名 ローレベルの詳細な情報を表示 ※3
-i デバイス名 LOGICAL_SECTOR_SIZEなどのI/O情報を表示 ※3
-n ファイルシステム -pと同時に利用する。指定したファイルシステムのみを対象に情報を解析する(「-n xfs,ext3,ext4」のように「,」区切りで複数指定可能、除外したいファイルシステムは「noxfs」のように指定)
-k blkidコマンドが対応しているファイルシステムのみを一覧表示する(例えば、swap、ext3、iso9660など)

※3 実行時にroot権限が必要。





ブロックデバイスの属性情報を表示する

 「blkid」で、現在使用できるブロックデバイスを一覧表示します(画面1)。「blkid デバイス名」では、指定したブロックデバイスの情報だけを表示します。

 「blkid -t TYPE=ファイルシステム」で、指定したファイルシステムのブロックデバイスのみを表示できます。

コマンド実行例

blkid

(現在使用できるブロックデバイスの情報を一覧表示する)(画面1の1番目のコマンドライン)

blkid デバイス

(指定したデバイスの情報を表示する)

blkid /dev/sda1

(/dev/sda1の情報を表示する)(画面1の2番目のコマンドライン)

blkid -t TYPE=ファイルシステム

(指定したファイルシステムの情報を表示する)

blkid -t TYPE=xfs

(xfsのデバイスを表示する)(画面1の3番目のコマンドライン)


画面1 画面1 ブロックデバイスの属性を表示したところ


一般ユーザーで実行する場合の注意事項

 blkidコマンドをroot権限で実行すると、デバイスの最新の情報を読み出して表示し、同時にキャッシュファイル(/run/blkid/blkid.tab、または/etc/blkid.tab)に出力します。デバイスの情報を取得してキャッシュファイルを更新するには、root権限が必要です。

 一般ユーザーでもblkidコマンドを実行できます。しかし、キャッシュファイルの情報に基づいて出力するため、キャッシュファイルが存在しない場合や、キャッシュファイル作成後にディスクの状況が変わった場合、正確な情報を表示できません(画面2)。特にディスクの状況が変わった場合に注意が必要です。

 「-c」オプションを使うと、キャッシュファイルを指定できます。以前作成したキャッシュファイルを無視して表示したい場合は「blkid -c /dev/null」のように、/dev/nullを指定します。この場合、デバイスの情報を新たに読み出すため、root権限が必要です。

画面2 画面2 一般ユーザー権限とroot権限で表示内容が違う


書式を指定する

 「-o」オプションで、書式や表示内容を指定できます(画面3)。例えば、「-o list」で固定長に整形した表示に、「-o device」でデバイス名のみの表示になります。

 なお、指定したラベルに該当するデバイスを表示する「-L ラベル」や、指定した識別子に該当するデバイスを表示する「-U 識別子」を指定した場合は、常にデバイス名のみを表示します。従って「blkid -o device -t LABEL=data」と「blkid -L data」は同じ結果になります。

コマンド実行例

blkid -o list

(固定長に整形して表示)(画面3の1番目のコマンドライン)

blkid -o device -t LABEL=data

(ラベルがdataのデバイス名を表示)(画面3の2番目のコマンドライン)

blkid -L data

(ラベルがdataのデバイス名を表示)(画面3の3番目のコマンドライン)


画面3 画面3 書式などを変更したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。