如何从 Linux 终端列出计算机的设备

准确找出您的 Linux 计算机中或连接到它的设备。我们将介绍 12 个用于列出已连接设备的命令。
为什么是 12 个命令?
不管剥猫皮的方法有多少,我敢打赌,有更多方法可以列出连接到 Linux 计算机或安装在 Linux 计算机中的设备。我们将向您展示其中的 12 个。这还不是全部!
不可避免地,您可以从这些命令中获得的信息有很多重叠,那么为什么要费心描述这么多呢?
好吧,一方面,内容和细节的变化使它们完全不同,以至于有些人会更喜欢一种方法而不是另一种方法。一个命令的输出格式可能特别适合特定用例。另一个命令的格式可能非常适合通过 grep
或其他进一步处理方法进行管道传输。
不过,主要是使文章尽可能通用。与其决定我们的读者会感兴趣或使用哪些命令,我们宁愿提供可用命令的广泛示例,让我们的读者选择他们将使用哪些命令以及他们将保持不变的命令。
需要一些安装
默认情况下,这些命令中的大多数都包含在您的 Linux 发行版中。 Ubuntu、Fedora 和 Manjaro 被用作 Debian、Red Hat 和 Arch 系列主要分支的代表性发行版样本。
所有三个发行版都需要安装 procinfo
,它提供了 lsdev
命令。 lsscsi
命令也需要安装在所有三个上。
要安装 lsdev
和 lsscsi
,请使用这些命令。
Ubuntu:
sudo apt-get install procinf
sudo apt-get install lsscsi


软呢帽:
sudo dnf install procinfo
sudo dnf install lsscsi


曼扎罗
sudo pacman -Syu procinfo
sudo pacman -Syu lsscsi


令人惊讶的是,Manjaro——以其简单的发行版而闻名——是预装了我们将要查看的大部分命令的发行版。
Ubuntu 和 Fedora 需要安装 hwinfo
,Fedora 也需要安装 lshw
和 hdparm
。
Ubuntu:
sudo apt-get install hwinfo

软呢帽:
sudo dnf install hwinfo
sudo dnf install lshw
sudo dnf install hdparm



1.挂载命令
mount 命令用于挂载文件系统。
但是发出不带参数的命令会导致它列出所有已安装的文件系统,以及它们所在的设备。所以我们可以用它来发现这些设备。
mount

mount
的输出可能比您预期的要长,尤其是当您使用 snap
方法安装软件时。每次您使用 snap
时,您都会获得另一个伪文件系统,这些伪文件系统由 mount
列出。当然,这些并没有与之关联的物理设备,因此它们只是在掩盖真实情况。

如果您发现列表中的真实文件系统位于硬盘驱动器上,我们可以使用 grep
将其隔离。
硬盘驱动器按名称标识,通常称为“sd”,后跟一个以“a”开头的字母表示第一个驱动器,“b”表示第二个驱动器,依此类推。分区通过为第一个分区添加 1 和为第二个分区添加 2 来标识,依此类推。
所以第一个硬盘驱动器将是 sda,该驱动器上的第一个分区将称为 sda1。硬盘驱动器通过 /dev 中的特殊设备文件(称为块文件)连接,然后安装在文件系统树的某个位置。
此命令使用 grep
过滤掉任何以“sd”开头的驱动器的详细信息。
mount | grep /dev/sd

输出包含用于研究本文的机器中的单个硬盘驱动器。

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 表示是。
- Size 是设备的容量。
- RM:设备是否只读。 0 表示否,1 表示是。
- Type:设备的类型,例如loop、dir(目录)、disk、rom(光驱)等。
- 挂载点:设备文件系统的挂载点。

为了消除输出的混乱并删除循环设备,我们可以使用 -e
(排除)选项并提供我们希望忽略的设备类型的数量。
此命令将导致 lsblk
忽略 loop (7) 和 cd room (11) 设备。
lsblk -e 7,11

结果现在只包含硬盘驱动器 sda。

3. df 命令
df
命令报告驱动器容量以及已用和可用空间。
在命令行中键入 df
并按 Enter。
df

输出表显示:
- Fileystem:此文件系统的名称。
- 1K-Blocks:此文件系统上可用的 1K 块数。
- 已用:已在此文件系统上使用的 1K 块数。
- 可用:此文件系统上未使用的 1K 块数。
- Use%:此文件系统中使用的空间量,以百分比形式给出。
- File:文件系统名称(如果在命令行中指定)。
- Mounted on:文件系统的挂载点。

要从输出中删除不需要的条目,请使用 -x
(排除)选项。此命令将阻止列出循环设备条目。
df -x squashfs

紧凑的输出更容易解析重要信息。

4. fdisk 命令
fdisk
命令是一个用来操作磁盘分区表的工具,但它也可以用来查看信息。当我们调查计算机中的设备时,我们可以利用这一点。
我们将使用 -l
(列表)选项列出分区表。因为输出可能很长,所以我们将从 fdisk
输出到 less
。因为 fdisk
有可能改变磁盘分区表,所以我们必须使用 sudo
。
sudo fdisk -l

通过滚动 less
,您将能够识别硬件设备。这是硬盘驱动器 sda 的条目。这是一个 10 GB 的物理硬盘。

现在我们知道其中一个硬件设备的身份,我们可以要求 fdisk
单独报告该项目。
sudo fdisk -l /dev/sda

我们得到的输出长度大大减少了。

5. /proc 文件
可以查看/proc 中的伪文件来获取一些系统信息。我们将查看的文件是 /proc/mounts,它将为我们提供有关已挂载文件系统的一些信息。我们将使用cat
来查看文件。
cat /proc/mounts

该清单显示了 /dev 中用于连接设备的特殊设备文件和文件系统树上的挂载点。

我们可以使用 grep
查找其中包含 /dev/sd 的条目来优化列表。这将过滤掉物理驱动器。
cat /proc/mounts | grep /dev/sd

这为我们提供了一个更易于管理的报告。

通过使用 grep
来查找具有 /dev/sd 和 /dev/sr 特殊设备文件的设备,我们可以稍微更具包容性。这将包括本机的硬盘驱动器和 CD ROM。
cat /proc/partitions | grep s[rd]

现在输出中包含两个设备和一个分区。

6.lspci命令
lspci
命令列出了您计算机中的所有 PCI 设备。
lspci

提供的信息是:
- 插槽:安装 PCI 设备的插槽
- Class:设备的类别。
- 供应商名称:制造商的名称。
- 设备名称:设备的名称。
- 子系统:子系统供应商名称(如果设备有子系统)。
- 子系统名称:如果设备有子系统。
- Revision number:设备的版本号
- 编程接口:编程接口,如果设备提供的话。

7. lsusb 命令
lsusb
命令将列出连接到计算机 USB 端口的设备以及计算机内置的支持 USB 的设备。
lsusb

这台测试计算机有一个佳能扫描仪连接到它作为 USB 设备 5,一个外部 USB 驱动器作为 USB 设备 4。设备 3 和 1 是内部 USB 接口处理程序。

您可以使用 -v
(详细)选项接收更详细的列表,使用 -vv
可以接收更详细的版本。
8.lsdev命令
lsdev
命令显示所有已安装设备的信息。
这个命令会产生很多输出,所以我们要通过 less 来处理它。
lsdev | less

输出中列出了许多硬件设备。

9. lshw 命令
lshw
命令列出连接到您计算机的设备。这是另一个有很多输出的命令。在测试计算机上,生成了 260 多行信息。我们将再次通过 less
对其进行管道传输。
请注意,您需要将 sudo
与 lshw
一起使用才能充分利用它。如果不这样做,它将无法访问所有设备。
sudo lshw | less

这是带有 SCSI 接口的 CD ROM 的条目。如您所见,为每个设备提供的信息非常详细。 lshw
从 /proc 中的各种文件中读取大部分信息。

如果您想要更短、更不详细的输出,可以使用 --short
选项。
10.lsscsi命令
正如您现在想象的那样,lsscsi
命令列出了连接到您的计算机的 SCSI 设备。
lsscsi

这是连接到该测试机的 SCSI 设备。

11. dmidecode 命令
dmidecode
命令解码桌面管理接口 (DMI) 表,并提取与连接到计算机的硬件和计算机内部相关的信息。
DMI 有时也称为 SMBIOS(系统管理基本输入/输出系统),尽管它们实际上是两个不同的标准。
同样,我们将通过 less
进行管道传输。
dmidecode | less

dmidecode
命令可以报告 40 多种不同的硬件类型。
12.hwinfo命令
hwinfo
命令是所有命令中最冗长的。当我们说你需要通过 less
来传递一些东西时,这一次它不是可选的。在测试计算机上,它生成了 5850 行输出!
您可以通过包含 --short
选项来慢慢开始。
hwinfo --short

如果您确实需要查看最细粒度的细节,请重复此操作并省略 --short
选项。

包起来
因此,这里有十几种方法来调查计算机内或连接到计算机的设备。
无论您对搜索此硬件有何特别兴趣,此列表中都会有一种方法可以让您找到所需的东西。
Linux Commands | ||
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc | |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts