Linuxターミナルからコンピュータのデバイスをリストする方法

  • Linuxではデバイスをリストするコマンドが複数あり、それぞれ内容と詳細が異なり、さまざまなユースケースや好みに対応しています。
  • これらのコマンドのほとんどはLinuxディストリビューションにすでに含まれていますが、一部のインストールではprocinf、lsscsi、hwinfo、lshw、hdparmなどの追加コマンドが必要になる場合があります。
  • Ubuntuで「sudo apt install hwinfo」を実行するか、Fedoraで「sudo dnf install hwinfo」を実行してhwinfoをインストールし、「hwinfo --short」を実行してデバイスのリストをすばやく取得します。

Linuxコンピュータ内にあるデバイスや接続されているデバイスを正確に把握しましょう。接続されているデバイスをリストするための12個のコマンドを紹介します。

デバイスをリストする12個のコマンドとは

猫の皮を剥ぐ方法は数多くありますが、Linuxコンピュータに接続されている、または内部に格納されているデバイスをリストする方法がさらに多いことは間違いありません。ここでは、そのうちの12個を紹介します。それだけではありません!

必然的に、これらのコマンドから得られる情報には多くの重複があります。では、なぜこれほど多くのコマンドを説明するのでしょうか?

まず、内容と詳細が異なるため、人によってはお気に入りの方法が異なります。あるコマンドの出力形式は、特定のユースケースに特に適している場合があります。別のコマンドの形式は、grepやその他の追加処理方法を通じてパイプ処理するのに最適な場合があります。

しかし、主に記事をできるだけ一般化するためです。どのコマンドが読者にとって興味深いまたは役立つかを判断するのではなく、利用可能なコマンドの幅広いサンプルを提供し、読者にどれを使用するか、どれを使用しないかを選択してもらいます。

必要なインストール

これらのコマンドのほとんどは、デフォルトでLinuxディストリビューションに含まれています。Ubuntu、Fedora、Manjaroは、Debian、Red Hat、Archの各ファミリーの主要ブランチのディストリビューションの代表的なサンプルとして使用されました。

3つのディストリビューションすべてで、lsdevコマンドを提供するprocinfoをインストールする必要がありました。また、3つすべてでlsscsiコマンドをインストールする必要がありました。

lsdevとlsscsiをインストールするには、以下のコマンドを使用します。

Ubuntuの場合:

sudo apt-get install procinf

sudo apt-get install lsscsi

Fedoraの場合:

sudo dnf install procinfo

sudo dnf install lsscsi

Manjaroの場合:

sudo pacman -Syu procinfo

sudo pacman -Syu lsscsi

驚くべきことに、基本的なディストリビューションとして知られるManjaroは、今回取り上げるコマンドのほとんどがプリインストールされたディストリビューションでした。

UbuntuとFedoraではhwinfoのインストールが必要で、Fedoraではlshwとhdparmのインストールも必要でした。

Ubuntuの場合:

sudo apt-get install hwinfo

Fedoraの場合:

sudo dnf install hwinfo

sudo dnf install lshw

sudo dnf install hdparm

1. mountコマンド

mountコマンドは、ファイルシステムをマウントするために使用されます。

しかし、パラメータを指定せずにコマンドを実行すると、マウントされているすべてのファイルシステムとそのファイルシステムが配置されているデバイスがリストされます。そのため、これをデバイスを検出する方法として使用できます。

mount

mountから得られる出力は、特にsnapメソッドを使用してソフトウェアをインストールした場合、想定よりも長くなる可能性があります。snapを使用するたびに、別の疑似ファイルシステムを取得し、それらはmountによってリストされます。もちろん、これらには関連付けられている物理デバイスがないため、実際の状況が不明瞭になるだけです。

リストにハードドライブ上の実際のファイルシステムが見つかった場合は、grepを使用して分離できます。

ハードドライブは名前で識別され、通常は「sd」と呼ばれ、最初のドライブの「a」、2番目のドライブの「b」など、文字が続きます。パーティションは、最初のパーティションに1、2番目のパーティションに2を追加して識別されます。つまり、最初のハードドライブはsdaとなり、そのドライブの最初のパーティションはsda1と呼ばれます。ハードドライブは、/dev内の特別なデバイスファイル(ブロックファイルと呼ばれる)を介してインターフェースされ、ファイルシステムツリーのどこかでマウントされます。

このコマンドでは、grepを使用して「sd」で始まるドライブの詳細をフィルター処理しました。

mount | grep /dev/sd

出力には、この記事の調査に使用されたマシン内の1つのハードドライブが含まれています。

mountからの応答は、ドライブ/dev/sdaが/(ファイルシステムツリーのルート)でマウントされ、ext4ファイルシステムを持っていることを示しています。「rw」は、それが読み取り/書き込みモードでマウントされていることを示しています。

Relatimeは、ファイルタイムスタンプ更新ルーチンによって使用されるスキームです。アクセス時間は、ファイルの変更時間(mtime)または変更時間(ctime)が最後のアクセス時間よりも新しい場合、またはアクセス時間(atime)がシステム定義のしきい値よりも古い場合にのみディスクに書き込まれます。これにより、頻繁にアクセスされるファイルに対して実行する必要のあるディスク更新の回数が大幅に削減されます。

「errors=remount-ro」は、重大なエラーが発生した場合、ファイルシステムが読み取り専用モードで再マウントされることを示しています。

mountからの出力をスクロールして、デバイスにマウントされているファイルシステムをより簡単に見つけることができるように、mountからの出力をlessでパイプ処理します。

mount | less

/dev特殊ファイルに接続されているファイルシステムが表示されるまで、出力をスクロールします。

2. lsblkコマンド

lsblkコマンドは、ブロックデバイス、そのマウントポイント、およびその他の情報をリストします。コマンドラインでlsblkと入力します:

lsblk

出力は次のとおりです:

  • 名前: ブロックデバイスの名前
  • Maj:Min: メジャー番号はデバイスの種類を示します。最小数は、そのタイプのデバイスのリストから現在のデバイスの番号です。たとえば、7:4はループデバイス番号4を意味します。
  • RM: デバイスがリムーバブルかどうか。0はいいえ、1ははいを意味します。
  • サイズ: デバイスの容量です。
  • RM: デバイスが読み取り専用かどうか。0はいいえ、1ははいを意味します。
  • タイプ: デバイスの種類。たとえば、ループ、dir(ディレクトリ)、ディスク、rom(CD ROM)などです。
  • マウントポイント: デバイスのファイルシステムがマウントされている場所。

出力を整理してループデバイスを削除するには、-e(除外)オプションを使用して、無視するデバイスの種類の番号を指定できます。

このコマンドにより、lsblkはループ(7)とCDルーム(11)デバイスを無視します。

lsblk -e 7,11

結果は、ハードドライブsdaのみを含むようになりました。

3. dfコマンド

dfコマンドは、ドライブの容量と使用済み容量と空き容量を報告します。

コマンドラインでdfと入力し、Enterキーを押します。

df

出力テーブルは次のとおりです:

  • ファイルシステム: このファイルシステムの名前。
  • 1Kブロック: このファイルシステムで使用可能な1Kブロックの数。
  • 使用済み: このファイルシステムで使用されている1Kブロックの数。
  • 使用可能: このファイルシステムで使用されていない1Kブロックの数。
  • 使用率: このファイルシステムで使用されている容量をパーセンテージで示したもの。
  • ファイル: コマンドラインで指定された場合のファイルシステム名。
  • マウントポイント: ファイルシステムのマウントポイント。

出力から不要なエントリを削除するには、-x(除外)オプションを使用します。このコマンドにより、ループデバイスのエントリがリストされるのを防ぎます。

df -x squashfs

コンパクトな出力は、重要な情報を解析しやすくなります。

4. fdiskコマンド

fdiskコマンドは、ディスクパーティションテーブルを操作するように設計されたツールですが、情報を表示するためにも使用できます。コンピュータ内のデバイスを調査するときに、これを利用できます。

パーティションテーブルをリストするには、-l(リスト)オプションを使用します。出力が非常に長くなる可能性があるため、fdiskからの出力をlessでパイプ処理します。fdiskにはディスクパーティションテーブルを変更する可能性があるため、sudoを使用する必要があります。

sudo fdisk -l | less

lessをスクロールすると、ハードウェアデバイスを識別できます。ハードドライブsdaのエントリを次に示します。これは10GBの物理ハードドライブです。

ハードウェアデバイスの1つのIDがわかったところで、fdiskにその項目だけを報告するように求めることができます。

sudo fdisk -l /dev/sda

かなり短い出力が得られます。

5. /procファイル

/proc内の疑似ファイルは、システム情報を取得するために表示できます。表示するファイルは/proc/mountsで、マウントされているファイルシステムに関する情報を提供します。ファイルを表示するためにcatよりも優れたものを使用しません。

cat /proc/mounts

リストには、デバイスとのインターフェースに使用される/dev内の特殊デバイスファイルと、ファイルシステムツリーのマウントポイントが表示されます。

/dev/sdを含むエントリをgrepを使用して検索することで、リストを絞り込むことができます。これにより、物理ドライブがフィルタリングされます。

cat /proc/mounts | grep /dev/sd

これにより、はるかに管理しやすいレポートが得られます。

/dev/sdと/dev/srの特殊デバイスファイルがあるデバイスをgrepを使用して検索することで、少しだけ包括的にすることができます。これには、このマシンのハードドライブとCD ROMが含まれます。

cat /proc/partitions | grep s[rd]

出力には、2つのデバイスと1つのパーティションが含まれるようになりました。

6. lspciコマンド

lspciコマンドは、コンピュータ内のすべてのPCIデバイスをリストします。

lspci

提供される情報は次のとおりです:

  • スロット: PCiデバイスが取り付けられているスロット
  • クラス: デバイスのクラス。
  • ベンダー名: 製造元の名前。
  • デバイス名: デバイスの名前。
  • サブシステム: デバイスにサブシステムがある場合のサブシステムベンダー名。
  • サブシステム名: デバイスにサブシステムがある場合。
  • リビジョン番号: デバイスのバージョン番号
  • プログラミングインターフェース: デバイスが提供している場合のプログラミングインターフェース。

7. lsusbコマンド

lsusbコマンドは、コンピュータのUSBポートに接続されているデバイスと、コンピュータに組み込まれているUSB対応デバイスをリストします。

lsusb

このテストコンピュータには、CanonスキャナがUSBデバイス5として接続されており、外部USBドライブがUSBデバイス4として接続されています。デバイス3と1は、内部USBインターフェースハンドラーです。

verbose(詳細)オプションを使用して、より詳細なリストを受け取ることができます。さらに詳細なバージョンは、-vvを使用することで実現できます。

8. lsdevコマンド

lsdevコマンドは、インストールされているすべてのデバイスに関する情報を表示します。

このコマンドは多くの出力を生成するため、lessでパイプ処理します。

lsdev | less

出力には多くのハードウェアデバイスがリストされています。

9. lshwコマンド

lshwコマンドは、コンピュータに接続されているデバイスをリストします。これは、出力が非常に多い別のコマンドです。テストコンピュータでは、260行以上の情報が生成されました。もう一度lessでパイプ処理します。

lshwを最大限に活用するには、sudoを使用する必要があることに注意してください。使用しないと、すべてのデバイスにアクセスできなくなります。

sudo lshw | less

SCSIインターフェースを備えたCD ROMのエントリを次に示します。ご覧のとおり、各デバイスに提供される情報は非常に詳細です。lshwは、/proc内のさまざまなファイルからほとんどの情報を取得します。

より短く、詳細の少ない出力を希望する場合は、--shortオプションを使用できます。

10. lsscsiコマンド

想像のとおり、lsscsiコマンドはコンピュータに接続されているSCSIデバイスをリストします。

lsscsi

このテストマシンに接続されているSCSIデバイスを次に示します。

11. dmidecodeコマンド

dmidecodeコマンドは、デスクトップ管理インターフェース(DMI)テーブルをデコードし、コンピュータに接続されているハードウェアとコンピュータ内部のハードウェアに関連する情報を抽出します。

DMIは、SMBIOS(システム管理基本入出力システム)と呼ばれることもあります。ただし、実際には2つの異なる標準です。

ここでも、lessでパイプ処理します。

dmidecode | less

dmidecodeコマンドは、40種類以上のハードウェアタイプを報告できます。

12. hwinfoコマンド

hwinfoコマンドは、最も詳細なコマンドです。lessで何かをパイプ処理する必要があると言ったとき、今回はオプションではありません。テストコンピュータでは、5850行の出力が生成されました!

--shortオプションを含めて、慎重に開始できます。

hwinfo --short

最も詳細な詳細を本当に見たい場合は、これを繰り返して--shortオプションを省略します。

まとめ

コンピュータ内またはコンピュータに接続されているデバイスを調査する12の方法を次に示します。

このハードウェアを調査することに特別な関心がある場合でも、このリストにはニーズを満たす方法があります。