云无处不在，所以硬件比以往任何时候都更加关键。我们很容易忘记技术人员所取得的进步。在 2000 年代初期，大多数本地用户组（LUG）定期举行安装节。那时，要配置一台机器来很好地运行 Linux，我们必须了解有关硬件的详细信息以及如何配置它。现在，将近二十年后，有了一个项目，其核心理想是让一台计算机运行 Linux 就像 API 调用一样简单。在这个新世界中，运维人员和开发者等不再需要担心服务器中的硬件。这种变化对下一代的运维人员和开发者产生了深远的影响。在计算机技术的早期，你不得不经常接触硬件。如果计算机需要更多内存，你只需添加它即可。随着时间的推移，技术也有了很大的发展。这最终使运维人员远离硬件。过去需要去数据中心一趟，现在变成了远程操作硬件的支持工单。最终，硬件被完全摆脱了。相反，你现在可以通过简单的命令召唤和摧毁“服务器”，而不必再担心硬件问题。这里是真正的真相：硬件的存在是因为需要它来为云提供动力。但是，云到底是什么？为什么硬件对云至关重要云是建立在利用抽象集中的基础资源之上的。它的范围可以从简单的在你的 家庭实验室 中运行几个虚拟机的管理程序，到复杂的包括定制服务器、网络设备、容器和从头开始设计的专注于规模效率的技术。它们是模糊的。它们在进化。今天那些进入技术领域的人没有那些更有经验的开发人员实践经验。许多人从最早与计算机交互时就接受过使用云的培训。他们不知道不用按钮来更改内存分配的世界。他们可以将注意力转移到技术栈的更高层次。然而，如果不了解他们所使用的基础架构所建立的基础，他们就会含蓄地放弃学习栈较低级别（包括硬件）的机会。这里没有说错，因为云基础设施的实施者和运维人员已经做出了特定的选择，有意让他们的产品更易于使用。这意味着现在，你比以往任何时候都更需要有意识地考虑在选择使用云技术时你或其他人做出的权衡。大多数人在收到第一份超额的云账单或第一次因“吵闹的邻居”造成的中断之前，不会知道已经做出了哪些权衡。企业能否信任他们的供应商做出最适合他们运营的权衡？供应商会建议更有效或更有利可图的服务吗？让买家（或工程师！）当心。有意识地考虑权衡取舍需要从多个角度审视你的要求和目标。基础设施决策和其中的权衡是该项目的整个过程、设计或使用模型所固有的。这就是为什么必须尽快计划它们的原因。必须考虑多种不同的路径，以便为你的项目找到一个合适的归宿。首先是要实现的目标或提供的服务的轴心。这可能伴随着速度、质量或性能方面的要求。这本身可以驱动许多变量。你可能需要专用硬件（例如 GPU）才能以可接受的速度处理请求。此负载是否需要自动缩放？当然，这些路径是交织在一起的。问题已经跳转到“我的钱包会自动缩放吗？”业务需求是要考虑的另一部分。你的项目可能有特定的安全或合规性要求，这些要求规定了数据的存储位置。邻近相关服务也是一个潜在的问题。这包括确保与附近证券交易所的 低延迟连接 或能够提供高质量的本地视频缓存作为内容交付网络（CDN）的一部分。然后是最后一部分，即所提供服务的价值和成本：一个人希望或可以花多少钱来满足要求。这与第一条路径紧密相关。你的业务是“什么”以及你的业务“如何”运作。这可以像你的企业更喜欢资本支出还是更喜欢运营支出一样普通。当看到这些选项时，很容易看到改变任何一个变量都会开始改变其他变量。它们在本质上是相互交织的，一些技术可能允许这些变量动态变化。如果不了解较低层次的底层，你就有可能采取推动这种动态计费模式的路径。对一些人来说，这是首选。对其他人来说，这可能是令人恐惧的。尽管在现代技术栈中，学习特定的硬件知识已变得更加可有可无，但我们希望这篇文章能鼓励你去研究你可能在不知不觉中错过的东西。硬件的改进是功能交付和效率提高的一个重要部分，将计算机从房间大小的怪物缩小到小到可以植入人体内。我们希望你花时间停下来，学习并考虑你的下一个项目将在什么硬件平台上运行，即使你不控制它。如果你是一个还没有把头从云端拿出来的学生，去找一台 旧电脑，安装一根内存，挑战自己，学习新东西。via: https://opensource.com/article/23/3/cloud-hardware作者：Jay Faulkner 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
硬核观察 #433 一位数学老师将微积分课程放在 P 站上大获成功
一位数学老师将微积分课程放在 P 站上大获成功YouTube 上的教学视频市场已经饱和，一位数学教师 决定 将自己的微积分课程视频上传到一个大型视频网站 P 站。他的频道中放了 200 多个明显不性感的黑板课程，涉及微分方程等主题，但是获得了 160 万浏览量，付费课程年收入达到了 25 万美元以上。有用户表示数学期末考试要用到。他的微积分视频包括了三个部分，第一部分是免费的，第二和第三部分则要付费。老王点评：这可是要叫“老师”的。卡马克为已停产的 VR 头盔推送解锁版操作系统开发了《DOOM》游戏的神级程序员约翰•卡马克加入了 Oculus 公司，并推动该公司为其已经停产的 Oculus Go 头盔显示器推出了一个 解锁版的操作系统更新，允许对超过 200 万台现有设备进行“完全 root 访问”。他在上个月 宣布 了这一更新计划，说这是他“多年来一直在推动的事情”。解锁可以让这些硬件在未来继续保持完整的功能，比如“二十年后更新到最新版本”。运行解锁操作系统的硬件将不再检查内核级别的签名，开发者可以为它创建新的底层软件。老王点评：如果每个硬件都能自由，那即便过时，也能发挥很多很好玩的作用。智能助手收集了很多数据根据 Reviews.org 的 一项调查，亚马逊的 Alexa 收集了 48 个可能的数据点中的 37 个；三星的 Bixby 收集了 34 个数据点，而微软的 Cortana 是 32个，苹果的 Siri 30 个，谷歌的智能助理只收集了 28 个。所有这五项服务都收集你的姓名、电话号码、设备位置和 IP 地址；你的联系人的姓名和号码；你的互动历史；以及你使用的应用程序。76% 的美国人报告说他们使用智能助手，但 61% 的人担心这些程序和设备总是在后台听他们说话。老王点评：家里有个“人”一直悄悄等你叫它，这其实挺可怕的。
lspci 命令用于显示 Linux 系统上的设备和驱动程序。当你在个人电脑或服务器上运行 Linux 时，有时需要识别该系统中的硬件。lspci 命令用于显示连接到 PCI 总线的所有设备，从而满足上述需求。该命令由 pciutils 包提供，可用于各种基于 Linux 和 BSD 的操作系统。基础用法由于访问权限，普通用户运行 lspci 时显示的信息可能会受限，因此可以使用 sudo 运行命令，系统会给出完整的信息图。直接运行 lspci 命令会列出 PCI 总线及其连接的设备，下图是在我的媒体中心 PC 上的演示样例。图中是一个基于 AMD Phenom CPU 的系统，所以它有一个 AMD 芯片组，以及 Atheros 无线适配器和 Nvidia 显卡。所有硬件设备都列出了详细信息，例如供应商、名称和型号等：$ sudo lspci 00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge 00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0) 00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0) 00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1) 00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] 00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller 00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller 00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller 00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller 00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c) 00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller 00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller 00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge 00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller 00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration 00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map 00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller 00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control 00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control 01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1) 02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01) 详细输出添加 -v 选项会显示每个设备的详细信息，你可以使用 -vv 或 -vvv 来获取更多的设备细节。在 -v 级别，lspci 会显示所有设备的各种子系统和内存地址、中断请求（IRQ）编号和一些其他功能信息。输出信息会非常长。在你的系统上试一试吧。使用 grep 过滤搜索你可能会需要缩小搜索范围。例如，RPM Fusion 网站有安装 Nvidia 图形驱动程序的说明，里面就首先使用了 grep 命令来定位显卡信息。下面是我在笔记本电脑上得到的输出：$ sudo lspci | grep -e VGA 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07) $ sudo lspci | grep -e 3D 01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2) 下面（LCTT 译注：原文为 “above”，应为作者笔误）的 grep 命令在我的媒体中心 PC 上定位了一个 VGA 设备，但没有显示 3D 设备。$ sudo lspci | grep -e VGA 01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1) $ sudo lspci | grep -e 3D $ 按供应商 ID 搜索还有另一种无需 grep 的方法可以使用。假设我想确认一下此计算机是否有其他的 Nvidia 设备，在此之前我们还需要一些额外信息，使用 -nn 选项显示的供应商和设备 ID 号。在我的媒体中心 PC 上，此选项会给出我的 VGA 卡、供应商 ID 和设备 ID：$ sudo lspci -nn | grep -e VGA 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1) 设备名称后的方括号内有用冒号分隔的数字，即供应商和设备 ID。输出表明 Nvidia Corporation 制造的设备的供应商 ID 为 10de。-d 选项用于指定供应商、设备或类 ID 的所有设备。以下是我系统中的所有 Nvidia 设备（保留 -nn 以解析供应商 ID）：$ sudo lspci -nn -d 10de: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1) 01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1) 从输出中可以看到，除了显卡之外，我还有一个 Nvidia 音频设备。实际上它们都属于同一张 Nvidia GeForce GTX 650 卡，但这仍然是一个很好的示例。内核模块结合 PCI 硬件设备，lspci 可以使用 -k 选项显示内核加载了哪些驱动程序模块。我将此选项添加到我的 lspci 命令来查看有关我的 Nvidia 设备的信息。$ sudo lspci -nn -k -d 10de: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1) Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650] Kernel driver in use: nvidia Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia 01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1) Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650] Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel 可以看到额外显示了两行： 正在使用的内核驱动程序 Kernel driver in use 和 内核模块 Kernel modules ，其中后者列出了可用于支持该设备的模块。同步最新状态新设备和供应商总是在不断迭代。如果看到显示为 unknown 的设备，说明你的 PCI 设备 ID 数据库可能已过时。有两种方法可以检查更新。-Q 选项会使用 DNS 查询中央数据库，当然，这需要联网。$ sudo lspci -Q 你还可以通过运行命令 update-pciids 来更新本地 PCI ID 数据库。$ sudo update-pciids Downloaded daily snapshot dated 2021-08-22 03:15:01 了解有关你的硬件的更多信息当然，lspci 只是 Linux 中用于查询系统硬件和软件的诸多命令之一。读者可以在阅读关于 USB 设备的文章，了解有关 Linux 硬件的更多信息：使用此 USB ID 存储库识别 Linux 上的更多设备。via: https://opensource.com/article/21/9/lspci-linux-hardware作者：Alan Formy-Duval 选题：lujun9972 译者：unigeorge 校对：turbokernel本文由 LCTT 原创编译，Linux中国 荣誉推出
升级你的电脑硬件来提升性能，以获得最大的回报。在我的文章《使用开源工具识别 Linux 性能瓶颈》中，我解释了一些使用开源的图形用户界面（GUI）工具监测 Linux 性能的简单方法。我的重点是识别 性能瓶颈，即硬件资源达到极限并阻碍你的 PC 性能的情况。你会如何解决性能瓶颈问题呢？你可以调整应用程序或系统软件。或者你可以运行更高效的应用程序。你甚至可以改变你使用电脑的行为，例如，将后台程序安排在非工作时间。你也可以通过硬件升级来提高电脑的性能。本文重点介绍可以给你带来最大回报的升级。开源工具是关键。GUI 工具可以帮助你监控你的系统，预测哪些硬件改进会有效。否则，你可能买了硬件后发现它并没有提高性能。在升级之后，这些工具也有助于验证升级是否产生了你预期的好处。这篇文章概述了一种简单的 PC 硬件升级的方法，其“秘诀”是开源的 GUI 工具。如何升级内存几年前，升级内存是不用多想的。增加内存几乎总是能提高性能。今天，情况不再是这样了。个人电脑配备了更多的内存，而且 Linux 能非常有效地使用它。如果你购买了系统用不完的内存，就浪费了钱。因此，你要花一些时间来监测你的电脑，看看内存升级是否会有助于提升它的性能。例如，在你进行典型的一天工作时观察内存的使用情况。而且一定要检查在内存密集型工作负载中发生了什么。各种各样的开源工具可以帮助你进行这种监测，不过我用的是 GNOME 系统监视器。它在大多数 Linux 软件库中都有。当你启动系统监视器时，它的“资源”面板会显示这样的输出：图 1. 用 GNOME 系统监视器监控内存 (Howard Fosdick, CC BY-SA 4.0)屏幕中间显示了内存的使用情况。交换空间 是 Linux 在内存不足时使用的磁盘空间。Linux 通过使用交换空间作为内存的一个较慢的扩展来有效地增加内存。由于交换空间比内存慢，如果内存交换活动变得显著，增加内存将改善你的计算机的性能。你会得到多大的改善取决于交换活动的数量和交换空间所在的设备的速度。如果使用了大量的交换空间，你通过增加内存会得到比只使用了少量交换空间更多的性能改善。如果交换空间位于慢速的机械硬盘上，你会发现增加内存比将交换空间放在最快的固态硬盘上改善更多。下面是一个关于何时增加内存的例子。这台电脑在内存利用率达到 80% 后显示交换活动在增加。当内存利用率超过 90% 时，它就变得失去反应了。图 2. 内存升级会有帮助（Howard Fosdick, CC BY-SA 4.0)如何进行内存升级在升级之前，你需要确定你有多少个内存插槽，有多少个是空的，它们需要什么样的内存条，以及你的主板所允许的最大内存。你可以阅读你的计算机的文档来获得这些答案。或者，你可以直接输入这些 Linux 命令行：问题命令已安装的内存条有什么特点？sudo lshw -short -C memory这台计算机允许的最大内存是多少？`sudo dmidecode -t memorygrep -i max`有多少个内存插槽是空的？（没有输出意味着没有可用的）`sudo lshw -short -C memorygrep -i empty`与所有的硬件升级一样，事先拔掉计算机的电源插头。在你接触硬件之前，将自己接地 —— 即使是最微小的电涌也会损坏电路。将内存条完全插入主板的插槽中。升级后，启动系统监视器。运行之前使你的内存超载的相同程序。系统监控器应该显示出你扩充的内存，而且你应该发现性能更好了。如何升级存储我们正处在一个存储快速改进的时代。即使是只用了几年的计算机也可以从磁盘升级中受益。但首先，你要确保升级对你的计算机和工作负载是有意义的。首先，要找出你有什么磁盘。许多开源工具会告诉你。Hardinfo 或 GNOME 磁盘 是不错的选择，因为它们都是广泛可用的，而且它们的输出很容易理解。这些应用程序会告诉你磁盘的品牌、型号和其他细节。接下来，通过基准测试来确定你的磁盘性能。GNOME 磁盘让这一切变得简单。只要启动该工具并点击它的“磁盘基准测试”选项。这会给出你磁盘的读写率和平均磁盘访问时间。图 3. GNOME 磁盘基准输出（Howard Fosdick, CC BY-SA 4.0)有了这些信息，你可以在 PassMark Software 和 UserBenchmark 等基准测试网站上将你的磁盘与其他人进行比较。这些网站提供性能统计、速度排名，甚至价格和性能数字。你可以了解到你的磁盘与可能的替代品相比的情况。下面是你可以在 UserBenchmark 找到的一些详细磁盘信息的例子。图 4. 在 UserBenchmark 进行的磁盘比较监测磁盘利用率就像你对内存所做的那样，实时监控你的磁盘，看看更换磁盘是否会提高性能。atop 命令行 会告诉你一个磁盘的繁忙程度。在它下面的输出中，你可以看到设备 sdb 是 busy 101%。其中一个处理器有 85% 的时间在等待该磁盘进行工作（cpu001 w 85%）。图 5. atop 命令显示磁盘利用率（Howard Fosdick, CC BY-SA 4.0）很明显，你可以用一个更快的磁盘来提高性能。你也会想知道是哪个程序使用了磁盘。只要启动系统监视器并点击其“进程”标签。现在你知道了你的磁盘有多忙，以及哪些程序在使用它，所以你可以做出一个有根据的判断，是否值得花钱买一个更快的磁盘。购买磁盘购买新的内置磁盘时，你会遇到三种主流技术：机械硬盘（HDD）SATA 接口的固态硬盘（SSD）PCIe 接口的 NVMe 固态磁盘（NVMe SSD）它们的速度差异是什么？你会在网上看到各种不同的数字。这里有一个典型的例子。图 6. 内部磁盘技术的相对速度（Unihost）红色柱形图： 机械硬盘提供最便宜的大容量存储。但就性能而言，它们是迄今为止最慢的。绿色柱形图： 固态硬盘比机械硬盘快。但如果固态硬盘使用 SATA 接口，就会限制其性能。这是因为 SATA 接口是十多年前为机械硬盘设计的。蓝色柱形图： 最快的内置磁盘技术是新的 PCIe 接口的 NVMe 固态盘。这些可以比 SATA 连接的固态硬盘大约快 5 倍，比机械硬盘快 20 倍。对于外置 SSD，你会发现 最新的雷电接口和 USB 接口 是最快的。如何安装一个内置磁盘在购买任何磁盘之前，请确认你的计算机支持必要的物理接口。例如，许多 NVMe 固态硬盘使用流行的新 M.2（2280）外形尺寸。这需要一个量身定做的主板插槽、一个 PCIe 适配器卡，或一个外部 USB 适配器。你的选择可能会影响你的新磁盘的性能。在安装新磁盘之前，一定要备份你的数据和操作系统。然后把它们复制到新磁盘上。像 Clonezilla、Mondo Rescue 或 GParted 这样的开源 工具 可以完成这项工作。或者你可以使用 Linux 命令行，如 dd 或 cp。请确保在最有影响的情况下使用你的快速新磁盘。把它用作启动盘、存储操作系统和应用程序、交换空间，以及最常处理的数据。升级之后，运行 GNOME 磁盘来测试你的新磁盘。这可以帮助你验证你是否得到了预期的性能提升。你可以用 atop 命令来验证实时运行。如何升级 USB 端口与磁盘存储一样，USB 的性能在过去几年中也有了长足的进步。许多只用了几年的计算机只需增加一个廉价的 USB 端口卡就能获得很大的性能提升。这种升级是否值得，取决于你使用端口的频率。很少使用它们，如果它们很慢也没有关系。经常使用它们，升级可能真的会影响你的工作。下面是不同端口标准的最大 USB 数据速率的巨大差异。图 7. USB 速度差别很大（Howard Fosdick，CC BY-SA 4.0，基于 Tripplite 和 维基 的数据要查看你得到的实际 USB 速度，请启动 GNOME 磁盘。GNOME 磁盘可以对 USB 连接的设备进行基准测试，就像对内部磁盘一样。选择其“磁盘基准测试”选项。你插入的设备和 USB 端口共同决定了你将得到的速度。如果端口和设备不匹配，你将体验到两者中较慢的速度。例如，将一个支持 USB 3.1 速度的设备连接到一个 2.0 端口，你将得到 2.0 的数据速率。你的系统不会告诉你这一点，除非你用 GNOME 磁盘这样的工具来检查）。反之，将 2.0 设备连接到 3.1 端口，你也会得到 2.0 的速度。因此，为了获得最好的结果，总是要匹配你的端口和设备的速度。要实时监控 USB 连接的设备，请使用 atop 命令和系统监控器，就像你监控内部磁盘一样。这可以帮助你看到是否碰到了当前设置的限制，并可以通过升级而受益。升级你的端口很容易。只要购买一个适合你的空闲的 PCIe 插槽的 USB 卡。USB 3.0 卡的价格只有 25 美元左右。较新、较贵的卡提供 USB 3.1 和 3.2 端口。几乎所有的 USB 卡都是即插即用的，所以 Linux 会自动识别它们。但在购买前一定要核实。请确保在升级后运行 GNOME 磁盘以验证新的速度。如何升级你的互联网连接升级你的互联网带宽很容易。只要给你的 ISP 写一张支票即可。问题是，应该升级吗？系统监控器显示了你的带宽使用情况（见图 1）。如果你经常遇到你从 ISP 购买的带宽限额，你会从购买更高的限额中受益。但首先，要确认你是否有一个可以自己解决的问题。我见过很多案例，有人认为他们需要从 ISP 那里购买更多的带宽，而实际上他们只是有一个可以自己解决的连接问题。首先在 Speedtest 或 Fast.com 等网站测试你的最大网速。为了获得准确的结果，关闭所有程序，只运行速度测试；关闭你的虚拟私有网络；在一天中的不同时间运行测试；并比较几个测试网站的结果。如果你使用 WiFi，在有 WiFi 和没有 WiFi 的情况下进行测试（将你的笔记本电脑直接与调制解调器连接）。如果你有一个单独的路由器，在有它和没有它的情况下进行测试。这将告诉你路由器是否是瓶颈。有时，只是重新定位你家里的路由器或更新其固件就能提高连接速度。这些测试将验证你是否得到了你从 ISP 购买的带宽速度。它们也会暴露出任何你可以自己解决的本地 WiFi 或路由器问题。只有在你做了这些测试之后，你才应该得出结论，你需要购买更多的网络带宽。你应该升级你的 CPU 还是 GPU？升级你的 CPU（中央处理单元）或 GPU（图形处理单元）呢？笔记本电脑用户通常不能升级这两个单元，因为它们被焊接在主板上。大多数台式机主板支持一系列的 CPU，并且是可以升级的 —— 假设你还没有使用该系列中最顶级的处理器。使用系统监视器观察你的 CPU，并确定升级是否有帮助。它的“资源”面板将显示你的 CPU 负载。如果你的所有逻辑处理器始终保持在 80% 或 90% 以上，你可以从更多的 CPU 功率中受益。这是一个升级 CPU 的有趣项目。只要小心谨慎，任何人都可以做到这一点。不幸的是，这几乎没有成本效益。大多数卖家对单个 CPU 芯片收取溢价，比他们卖给你的新系统要高。因此，对许多人来说，升级 CPU 并不具有经济意义。如果你将显示器直接插入台式机的主板，你可能会通过升级图形处理器而受益。只需添加一块显卡。诀窍是在新显卡和你的 CPU 之间实现平衡的工作负荷。这个 在线工具 能准确识别哪些显卡能与你的 CPU 最好地配合。这篇文章 详细解释了如何去升级你的图形处理。在升级前收集数据个人电脑用户有时会根据直觉来升级他们的 Linux 硬件。一个更好的方法是先监控性能并收集一些数据。开源的 GUI 工具使之变得简单。它们有助于预测硬件升级是否值得你花时间和金钱。然后，在你升级之后，你可以用它们来验证你的改变是否达到了预期效果。这些是最常见的硬件升级。只要稍加努力并使用正确的开源工具，任何 Linux 用户都可以经济有效地升级一台 PC。via: https://opensource.com/article/21/4/upgrade-linux-hardware作者：Howard Fosdick 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Linux 系统上的 lshw 命令提供的系统设备信息比我们大多数人想象的要多得多。虽然 lshw 命令（ 列出硬件 list hardware ，读作 “ls hardware”）远不是每个人最先学会的 50 个 Linux 命令之一，但它可以提供很多系统硬件的有用信息。它以一种相当易于理解的格式提取出可能比你知道的更多的信息。在看到描述、（设备）逻辑名称、大小等以后，你可能会理解到自己能获得多少信息。这篇文章会研究 lshw 给出的信息，但侧重于磁盘及相关硬件。下面是 lshw 的输出示例：$ sudo lshw -C disk *-disk:0 description: SCSI Disk product: Card Reader-1 vendor: JIE LI physical id: 0.0.0 bus info: scsi@4:0.0.0 logical name: /dev/sdc version: 1.00 capabilities: removable configuration: logicalsectorsize=512 sectorsize=512 *-medium physical id: 0 logical name: /dev/sdc 请注意，你需要使用 sudo 运行 lshw 命令以确保能得到所有可用的信息。虽然我们在上面的命令中要求了输出“磁盘（disk）”（上面只包含了原始输出里五个条目中的一个），这里的输出却不是一个硬盘，而是读卡器——磁盘的一种。注意系统将这个设备命名为了 /dev/sdc。系统的主磁盘上也有相似的信息：*-disk description: ATA Disk product: SSD2SC120G1CS175 physical id: 0 bus info: scsi@0:0.0.0 logical name: /dev/sda <==这里 version: 1101 serial: PNY20150000778410606 size: 111GiB (120GB) capabilities: partitioned partitioned:dos configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature= f63b5929 这块硬盘是 /dev/sda。这个系统上的硬盘都显示为 ATA 磁盘，ATA 是一种把控制器与盘体集成在一起的磁盘驱动器实现。要获得“磁盘”类设备的简略列表，可以运行下面这条命令。注意其中有两个设备被列出了两次，所以我们看到的仍然是五个磁盘设备。$ sudo lshw -short -C disk H/W path Device Class Description ============================================================= /0/100/1d/1/1/0.0.0 /dev/sdc disk Card Reader-1 /0/100/1d/1/1/0.0.0/0 /dev/sdc disk /0/100/1d/1/1/0.0.1 /dev/sdd disk 2 /0/100/1d/1/1/0.0.1/0 /dev/sdd disk /0/100/1f.2/0 /dev/sda disk 120GB SSD2SC120G1CS175 /0/100/1f.2/1 /dev/cdrom disk DVD+-RW GSA-H73N /0/100/1f.5/0.0.0 /dev/sdb disk 500GB SAMSUNG HE502HJ 如果你决定要查看系统上的 所有 设备，请坐稳了；你会得到一个包含的东西比你通常认为的“设备”要多得多的列表，下面是一个例子，这是一个“简短（short）”（信息很少）的列表：$ sudo lshw -short [sudo] password for shs: H/W path Device Class Description ============================================================= system Inspiron 530s /0 bus 0RY007 /0/0 memory 128KiB BIOS /0/4 processor Intel(R) Core(TM)2 Duo CPU /0/4/a memory 32KiB L1 cache /0/4/b memory 6MiB L2 cache /0/24 memory 6GiB System Memory /0/24/0 memory 2GiB DIMM DDR2 Synchronous 667 /0/24/1 memory 1GiB DIMM DDR2 Synchronous 667 /0/24/2 memory 2GiB DIMM DDR2 Synchronous 667 /0/24/3 memory 1GiB DIMM DDR2 Synchronous 667 /0/1 generic /0/10 generic /0/11 generic /0/12 generic /0/13 generic /0/14 generic /0/15 generic /0/17 generic /0/18 generic /0/19 generic /0/2 generic /0/20 generic /0/100 bridge 82G33/G31/P35/P31 Express DRAM /0/100/1 bridge 82G33/G31/P35/P31 Express PCI /0/100/1/0 display Caicos [Radeon HD 6450/7450/84 /0/100/1/0.1 multimedia Caicos HDMI Audio [Radeon HD 6 /0/100/19 enp0s25 network 82562V-2 10/100 Network Connec /0/100/1a bus 82801I (ICH9 Family) USB UHCI /0/100/1a/1 usb3 bus UHCI Host Controller /0/100/1a.1 bus 82801I (ICH9 Family) USB UHCI /0/100/1a.1/1 usb4 bus UHCI Host Controller /0/100/1a.1/1/2 input Rock Candy Wireless Keyboard /0/100/1a.2 bus 82801I (ICH9 Family) USB UHCI /0/100/1a.2/1 usb5 bus UHCI Host Controller /0/100/1a.2/1/2 input USB OPTICAL MOUSE /0/100/1a.7 bus 82801I (ICH9 Family) USB2 EHCI /0/100/1a.7/1 usb1 bus EHCI Host Controller /0/100/1b multimedia 82801I (ICH9 Family) HD Audio /0/100/1d bus 82801I (ICH9 Family) USB UHCI /0/100/1d/1 usb6 bus UHCI Host Controller /0/100/1d/1/1 scsi4 storage CD04 /0/100/1d/1/1/0.0.0 /dev/sdc disk Card Reader-1 /0/100/1d/1/1/0.0.0/0 /dev/sdc disk /0/100/1d/1/1/0.0.1 /dev/sdd disk 2 /0/100/1d/1/1/0.0.1/0 /dev/sdd disk /0/100/1d.1 bus 82801I (ICH9 Family) USB UHCI /0/100/1d.1/1 usb7 bus UHCI Host Controller /0/100/1d.2 bus 82801I (ICH9 Family) USB UHCI /0/100/1d.2/1 usb8 bus UHCI Host Controller /0/100/1d.7 bus 82801I (ICH9 Family) USB2 EHCI /0/100/1d.7/1 usb2 bus EHCI Host Controller /0/100/1d.7/1/2 multimedia USB Live camera /0/100/1e bridge 82801 PCI Bridge /0/100/1e/1 communication HSF 56k Data/Fax Modem /0/100/1f bridge 82801IR (ICH9R) LPC Interface /0/100/1f.2 scsi0 storage 82801IR/IO/IH (ICH9R/DO/DH) 4 /0/100/1f.2/0 /dev/sda disk 120GB SSD2SC120G1CS175 /0/100/1f.2/0/1 /dev/sda1 volume 111GiB EXT4 volume /0/100/1f.2/1 /dev/cdrom disk DVD+-RW GSA-H73N /0/100/1f.3 bus 82801I (ICH9 Family) SMBus Con /0/100/1f.5 scsi3 storage 82801I (ICH9 Family) 2 port SA /0/100/1f.5/0.0.0 /dev/sdb disk 500GB SAMSUNG HE502HJ /0/100/1f.5/0.0.0/1 /dev/sdb1 volume 433GiB EXT4 volume /0/3 system PnP device PNP0c02 /0/5 system PnP device PNP0b00 /0/6 storage PnP device PNP0700 /0/7 system PnP device PNP0c02 /0/8 system PnP device PNP0c02 /0/9 system PnP device PNP0c01 运行下面的命令来列出设备类别，并统计每个类别中的设备数量。$ sudo lshw -short | awk ‘{print substr($0,36,13)}’ | tail -n +3 | sort | uniq -c 4 bridge 18 bus 1 communication 7 disk 1 display 12 generic 2 input 8 memory 3 multimedia 1 network 1 processor 4 storage 6 system 2 volume 注意： 上面使用 awk 命令从 lshw 的输出中选择 Class（类别）栏是这样实现的：使用 $0（选取完整行），但只取从正确位置（第 36 个字符）开始的子串，而因为“类别”中并没有条目的长度超过 13 个字符，所以子串就在那里结束。命令中 tail -n +3 的部分移除了标题和下面的=====，所以最终的列表中只包含了那 14 种设备类型。（LCTT 译注：上面的命令中 awk 的部分在选取子串时是从第 36 个字符开始的，这个数字基本上取决于最长的设备逻辑名称的长度，因而在不同的系统环境中可能有所不同，一个例子是，当你的系统上有 NVMe SSD 时，可能需要将其改为 41。）你会发现在没有使用 -short 选项的时候，每一个磁盘类设备都会有大约 12 行的输出，包括像是 /dev/sda 这样的逻辑名称，磁盘大小和种类等等。$ sudo lshw -C disk [sudo] password for shs: *-disk:0 description: SCSI Disk product: Card Reader-1 <== 读卡器？ vendor: JIE LI physical id: 0.0.0 bus info: scsi@4:0.0.0 logical name: /dev/sdc version: 1.00 capabilities: removable configuration: logicalsectorsize=512 sectorsize=512 *-medium physical id: 0 logical name: /dev/sdc *-disk:1 description: SCSI Disk product: 2 vendor: AC4100 - physical id: 0.0.1 bus info: scsi@4:0.0.1 logical name: /dev/sdd capabilities: removable configuration: logicalsectorsize=512 sectorsize=512 *-medium physical id: 0 logical name: /dev/sdd *-disk description: ATA Disk product: SSD2SC120G1CS175 physical id: 0 bus info: scsi@0:0.0.0 logical name: /dev/sda <== 主要磁盘 version: 1101 serial: PNY20150000778410606 size: 111GiB (120GB) capabilities: partitioned partitioned:dos configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=f63b5929 *-cdrom <== 也叫 /dev/sr0 description: DVD writer product: DVD+-RW GSA-H73N vendor: HL-DT-ST physical id: 1 bus info: scsi@1:0.0.0 logical name: /dev/cdrom logical name: /dev/cdrw logical name: /dev/dvd logical name: /dev/dvdrw logical name: /dev/sr0 version: B103 serial: [ capabilities: removable audio cd-r cd-rw dvd dvd-r configuration: ansiversion=5 status=nodisc *-disk description: ATA Disk product: SAMSUNG HE502HJ physical id: 0.0.0 bus info: scsi@3:0.0.0 logical name: /dev/sdb <== 次要磁盘 version: 0002 serial: S2B6J90B501053 size: 465GiB (500GB) capabilities: partitioned partitioned:dos configuration: ansiversion=5 logicalsectorsize=512 sectorsize=512 signature=7e67ccf3 总结lshw 命令提供了一些我们许多人通常不会处理的信息，不过即使你只用了其中的一部分，知道有多少信息可用还是很不错的。via: https://www.networkworld.com/article/3583598/how-to-view-information-on-your-linux-devices-with-lshw.html作者：Sandra Henry-Stocker 选题：lujun9972 译者：rakino 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
由于物联网（IoT）的兴起，对硬件进行编程变得越来越普遍。RT-Thread 可以让你可以用 FinSH 从 Linux 命令行与设备进行沟通、RT-Thread 是一个开源的实时操作系统，用于对物联网（IoT）设备进行编程。FinSH 是 RT-Thread 的命令行组件，它提供了一套操作界面，使用户可以从命令行与设备进行沟通。它主要用于调试或查看系统信息。通常情况下，开发调试使用硬件调试器和 printf 日志来显示。但在某些情况下，这两种方法并不是很有用，因为它是从运行的内容中抽象出来的，而且它们可能很难解析。不过 RT-Thread 是一个多线程系统，当你想知道一个正在运行的线程的状态，或者手动控制系统的当前状态时，这很有帮助。因为它是多线程的，所以你能够拥有一个交互式的 shell，你可以直接在设备上输入命令、调用函数来获取你需要的信息，或者控制程序的行为。如果你只习惯于 Linux 或 BSD 等现代操作系统，这在你看来可能很普通，但对于硬件黑客来说，这是极其奢侈的，远超将串行电缆直接连线到电路板上以获取一丝错误的做法。FinSH 有两种模式。C 语言解释器模式，称为 c-style。传统的命令行模式，称为 msh（模块 shell）。在 C 语言解释器模式下，FinSH 可以解析执行大部分 C 语言的表达式，并使用函数调用访问系统上的函数和全局变量。它还可以从命令行创建变量。在 msh 模式下，FinSH 的操作与 Bash 等传统 shell 类似。GNU 命令标准当我们在开发 FinSH 时，我们了解到，在编写命令行应用程序之前，你需要熟悉 GNU 命令行标准。这个标准实践的框架有助于给界面带入熟悉感，这有助于开发人员在使用时感到舒适和高效。一个完整的 GNU 命令主要由四个部分组成。命令名（可执行文件）：命令行程序的名称；子命令：命令程序的子函数名称。选项：子命令函数的配置选项。参数：子命令函数配置选项的相应参数。你可以在任何命令中看到这一点。以 Git 为例：git reset --hard HEAD~1 这一点可以分解为：可执行的命令是 git，子命令是 reset，使用的选项是 --head，参数是 HEAD~1。再举个例子：systemctl enable --now firewalld 可执行的命令是 systemctl，子命令是 enable，选项是 --now，参数是 firewalld。想象一下，你想用 RT-Thread 编写一个符合 GNU 标准的命令行程序。FinSH 拥有你所需要的一切，并且会按照预期运行你的代码。更棒的是，你可以依靠这种合规性，让你可以自信地移植你最喜欢的 Linux 程序。编写一个优雅的命令行程序下面是一个 RT-Thread 运行命令的例子，RT-Thread 开发人员每天都在使用这个命令：usage: env.py package [-h] [--force-update] [--update] [--list] [--wizard] [--upgrade] [--printenv] optional arguments: -h, --help show this help message and exit --force-update force update and clean packages, install or remove the packages by your settings in menuconfig --update update packages, install or remove the packages by your settings in menuconfig --list list target packages --wizard create a new package with wizard --upgrade upgrade local packages list and ENV scripts from git repo --printenv print environmental variables to check 正如你所看到的那样，它看起来很熟悉，行为就像你可能已经在 Linux 或 BSD 上运行的大多数 POSIX 应用程序一样。当使用不正确或不充分的语法时，它会提供帮助，它支持长选项和短选项。这种通用的用户界面对于任何使用过 Unix 终端的人来说都是熟悉的。选项种类选项的种类很多，按长短可分为两大类。短选项：由一个连字符加一个字母组成，如 pkgs -h 中的 -h 选项。长选项：由两个连字符加上单词或字母组成，例如，scons- --target-mdk5 中的 --target 选项。你可以把这些选项分为三类，由它们是否有参数来决定。没有参数：该选项后面不能有参数。参数必选：选项后面必须有参数。参数可选：选项后可以有参数，但不是必需的。正如你对大多数 Linux 命令的期望，FinSH 的选项解析非常灵活。它可以根据空格或等号作为定界符来区分一个选项和一个参数，或者仅仅通过提取选项本身并假设后面的内容是参数（换句话说，完全没有定界符）。wavplay -v 50wavplay -v50wavplay --vol=50使用 optparse如果你曾经写过命令行程序，你可能会知道，一般来说，你所选择的语言有一个叫做 optparse 的库或模块。它是提供给程序员的，所以作为命令的一部分输入的选项（比如 -v 或 --verbose）可以与命令的其他部分进行解析。这可以帮助你的代码从一个子命令或参数中获取一个选项。当为 FinSH 编写一个命令时，optparse 包希望使用这种格式：MSH_CMD_EXPORT_ALIAS(pkgs, pkgs, this is test cmd.); 你可以使用长形式或短形式，或者同时使用两种形式来实现选项。例如：static struct optparse_long long_opts[] = { {"help" , 'h', OPTPARSE_NONE}, // Long command: help, corresponding to short command h, without arguments. {"force-update", 0 , OPTPARSE_NONE}, // Long comman: force-update, without arguments {"update" , 0 , OPTPARSE_NONE}, {"list" , 0 , OPTPARSE_NONE}, {"wizard" , 0 , OPTPARSE_NONE}, {"upgrade" , 0 , OPTPARSE_NONE}, {"printenv" , 0 , OPTPARSE_NONE}, { NULL , 0 , OPTPARSE_NONE} }; 创建完选项后，写出每个选项及其参数的命令和说明：static void usage(void) { rt_kprintf("usage: env.py package [-h] [--force-update] [--update] [--list] [--wizard]\n"); rt_kprintf(" [--upgrade] [--printenv]\n\n"); rt_kprintf("optional arguments:\n"); rt_kprintf(" -h, --help show this help message and exit\n"); rt_kprintf(" --force-update force update and clean packages, install or remove the\n"); rt_kprintf(" packages by your settings in menuconfig\n"); rt_kprintf(" --update update packages, install or remove the packages by your\n"); rt_kprintf(" settings in menuconfig\n"); rt_kprintf(" --list list target packages\n"); rt_kprintf(" --wizard create a new package with wizard\n"); rt_kprintf(" --upgrade upgrade local packages list and ENV scripts from git repo\n"); rt_kprintf(" --printenv print environmental variables to check\n"); } 下一步是解析。虽然你还没有实现它的功能，但解析后的代码框架是一样的：int pkgs(int argc, char **argv) { int ch; int option_index; struct optparse options; if(argc == 1) { usage(); return RT_EOK; } optparse_init(&options, argv); while((ch = optparse_long(&options, long_opts, &option_index)) != -1) { ch = ch; rt_kprintf("\n"); rt_kprintf("optopt = %c\n", options.optopt); rt_kprintf("optarg = %s\n", options.optarg); rt_kprintf("optind = %d\n", options.optind); rt_kprintf("option_index = %d\n", option_index); } rt_kprintf("\n"); return RT_EOK; } 这里是函数头文件：#include "optparse.h" #include "finsh.h" 然后，编译并下载到设备上。硬件黑客对硬件进行编程似乎很吓人，但随着物联网的发展，它变得越来越普遍。并不是所有的东西都可以或者应该在树莓派上运行，但在 RT-Thread，FinSH 可以让你保持熟悉的 Linux 感觉。如果你对在裸机上编码感到好奇，不妨试试 RT-Thread。via: https://opensource.com/article/20/9/hardware-command-line作者：Alan Smithee 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
了解是什么原因导致你的 Linux 硬件发生故障，以便你可以将其恢复并快速运行。Linux 服务器在物理机、虚拟化、私有云、公共云和混合云等许多不同种类的基础设施中运行着关键的业务应用程序。对于 Linux 系统管理员来说，了解如何管理 Linux 硬件基础设施（包括与 网络、存储、Linux 容器相关的软件定义功能）和 Linux 服务器上的多种工具非常重要。在 Linux 上进行排除和解决与硬件相关的问题可能需要一些时间。即使是经验丰富的系统管理员，有时也会花费数小时来解决神秘的硬件和软件差异。以下提示可以使你更快、更轻松地对 Linux 中的硬件进行故障排除。许多不同的事情都可能导致 Linux 硬件出现问题。在开始诊断它们之前，明智的做法是了解最常见的问题以及最有可能找到问题的地方。快速诊断设备、模块和驱动程序故障排除的第一步通常是显示 Linux 服务器上安装的硬件的列表。你可以使用诸如 lspci、lsblk、lscpu 和 lsscsi 之类的列出命令获取有关硬件的详细信息。例如，这是 lsblk 命令的输出：# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 50G 0 disk ├─xvda1 202:1 0 1M 0 part └─xvda2 202:2 0 50G 0 part / xvdb 202:16 0 20G 0 disk └─xvdb1 202:17 0 20G 0 part如果这些列出命令没有显示任何错误，请使用初始化系统（例如 systemd）查看 Linux 服务器的工作方式。 systemd 是最流行的初始化系统，用于启动用户空间并控制多个系统进程。例如，这是 systemctl status 命令的输出：# systemctl status ● bastion.f347.internal State: running Jobs: 0 queued Failed: 0 units Since: Wed 2018-11-28 01:29:05 UTC; 2 days ago CGroup: / ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 ├─kubepods.slice │ ├─kubepods-pod3881728a_f2af_11e8_af77_06af52f87498.slice │ │ ├─docker-88b27385f4bae77bba834fbd60a61d19026bae13d18eb147783ae27819c34967.scope │ │ │ └─23860 /opt/bridge/bin/bridge --public-dir=/opt/bridge/static --config=/var/console-config/console-c │ │ └─docker-a4433f0d523c7e5bc772ee4db1861e4fa56c4e63a2d48f6bc831458c2ce9fd2d.scope │ │ └─23639 /usr/bin/pod ....深入到各个日志当中使用 dmesg 可以找出内核最新消息中的错误和警告。例如，这是 dmesg | more 命令的输出：# dmesg | more .... [ 1539.027419] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 1539.042726] IPv6: ADDRCONF(NETDEV_UP): veth61f37018: link is not ready [ 1539.048706] IPv6: ADDRCONF(NETDEV_CHANGE): veth61f37018: link becomes ready [ 1539.055034] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 1539.098550] device veth61f37018 entered promiscuous mode [ 1541.450207] device veth61f37018 left promiscuous mode [ 1542.493266] SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue) [ 9965.292788] SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue) [ 9965.449401] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready [ 9965.462738] IPv6: ADDRCONF(NETDEV_UP): vetheacc333c: link is not ready [ 9965.468942] IPv6: ADDRCONF(NETDEV_CHANGE): vetheacc333c: link becomes ready ....你还可以在 /var/log/messages 文件中查看所有 Linux 系统日志，在该文件中你可以找到与特定问题相关的错误。当你对硬件进行修改（例如安装额外的磁盘或添加以太网网卡）时，通过 tail 命令实时监视消息是值得的。例如，这是 tail -f /var/log/messages 命令的输出：# tail -f /var/log/messages Dec 1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa Dec 1 13:20:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local Dec 1 13:21:03 bastion dnsmasq[30201]: setting upstream servers from DBus Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53 Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa Dec 1 13:21:03 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local Dec 1 13:21:33 bastion dnsmasq[30201]: setting upstream servers from DBus Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 192.199.0.2#53 Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain in-addr.arpa Dec 1 13:21:33 bastion dnsmasq[30201]: using nameserver 127.0.0.1#53 for domain cluster.local分析网络功能你可能有成千上万的云原生应用程序在一个复杂的网络环境中为业务提供服务，其中可能包括虚拟化、多云和混合云。这意味着，作为故障排除的一部分，你应该分析网络连接是否正常工作。弄清 Linux 服务器中网络功能的有用命令包括：ip addr、traceroute、nslookup、dig 和 ping 等。例如，这是 ip addr show 命令的输出：# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000 link/ether 06:af:52:f8:74:98 brd ff:ff:ff:ff:ff:ff inet 192.199.0.169/24 brd 192.199.0.255 scope global noprefixroute dynamic eth0 valid_lft 3096sec preferred_lft 3096sec inet6 fe80::4af:52ff:fef8:7498/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:67:fb:1a:a2 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:67ff:fefb:1aa2/64 scope link valid_lft forever preferred_lft forever ....总结对 Linux 硬件进行故障排除需要大量的知识，包括如何使用功能强大的命令行工具以及找出系统日志记录。 你还应该知道如何诊断内核空间，在那里你可以找到许多硬件问题的根本原因。请记住，Linux 中的硬件问题可能来自许多不同的来源，包括设备、模块、驱动程序、BIOS、网络，甚至是普通的旧硬件故障。via: https://opensource.com/article/18/12/troubleshooting-hardware-problems-linux作者：Daniel Oh 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
通过命令行获取计算机硬件详细信息。你可能会有很多的原因需要查清计算机硬件的详细信息。例如，你需要修复某些问题并在论坛上发出请求，人们可能会立即询问你的计算机具体的信息。或者当你想要升级计算机配置时，你需要知道现有的硬件型号和能够升级的型号。这些都需要查询你的计算机具体规格信息。最简单的方法是使用标准的 Linux GUI 程序之一:i-nex 收集硬件信息，并且类似于 Windows 下流行的 CPU-Z 的显示。HardInfo 显示硬件具体信息，甚至包括一组八个的流行的性能基准程序，你可以用它们评估你的系统性能。KInfoCenter 和 Lshw 也能够显示硬件的详细信息，并且可以从许多软件仓库中获取。或者，你也可以拆开计算机机箱去查看硬盘、内存和其他设备上的标签信息。或者你可以在系统启动时，按下相应的按键进入 UEFI 和 BIOS 界面获得信息。这两种方式都会向你显示硬件信息但省略软件信息。你也可以使用命令行获取硬件信息。等一下… 这听起来有些困难。为什么你会要这样做？有时候通过使用一条针对性强的命令可以很轻松的找到特定信息。也可能你没有可用的 GUI 程序或者只是不想安装这样的程序。使用命令行的主要原因可能是编写脚本。无论你是使用 Linux shell 还是其他编程语言来编写脚本通常都需要使用命令行。很多检测硬件信息的命令行都需要使用 root 权限。所以要么切换到 root 用户，要么使用 sudo 在普通用户状态下发出命令：sudo <the_line_command> 并按提示输入你的密码。这篇文章介绍了很多用于发现系统信息的有用命令。文章最后的快速查询表对它们作出了总结。硬件概述下面几条命令可以全面概述计算机硬件信息。inxi 命令能够列出包括 CPU、图形、音频、网络、驱动、分区、传感器等详细信息。当论坛里的人尝试帮助其他人解决问题的时候，他们常常询问此命令的输出。这是解决问题的标准诊断程序：inxi -Fxz-F 参数意味着你将得到完整的输出，x 增加细节信息，z 参数隐藏像 MAC 和 IP 等私人身份信息。hwinfo 和 lshw 命令以不同的格式显示大量相同的信息：hwinfo --short或lshw -short这两条命令的长格式输出非常详细，但也有点难以阅读：hwinfo或lshwCPU 详细信息通过命令你可以了解关于你的 CPU 的任何信息。使用 lscpu 命令或与它相近的 lshw 命令查看 CPU 的详细信息：lscpu或lshw -C cpu在这两个例子中，输出的最后几行都列出了所有 CPU 的功能。你可以查看你的处理器是否支持特定的功能。使用这些命令的时候，你可以通过使用 grep 命令过滤复杂的信息，并缩小所需信息范围。例如，只查看 CPU 品牌和型号:lshw -C cpu | grep -i product仅查看 CPU 的速度（兆赫兹）:lscpu | grep -i mhz或其 BogoMips 额定功率:lscpu | grep -i bogogrep 命令的 -i 参数代表搜索结果忽略大小写。内存Linux 命令行使你能够收集关于你的计算机内存的所有可能的详细信息。你甚至可以不拆开计算机机箱就能确定是否可以为计算机添加额外的内存条。使用 dmidecode 命令列出每根内存条和其容量：dmidecode -t memory | grep -i size使用以下命令获取系统内存更多的信息，包括类型、容量、速度和电压：lshw -short -C memory你肯定想知道的一件事是你的计算机可以安装的最大内存：dmidecode -t memory | grep -i max现在检查一下计算机是否有空闲的插槽可以插入额外的内存条。你可以通过使用命令在不打开计算机机箱的情况下就做到：lshw -short -C memory | grep -i empty输出为空则意味着所有的插槽都在使用中。确定你的计算机拥有多少显卡内存需要下面的命令。首先使用 lspci 列出所有设备信息然后过滤出你想要的显卡设备信息:lspci | grep -i vga视频控制器的设备号输出信息通常如下：00:02.0 VGA compatible controller: Intel Corporation 82Q35 Express Integrated Graphics Controller (rev 02)现在再加上视频设备号重新运行 lspci 命令：lspci -v -s 00:02.0输出信息中 prefetchable 那一行显示了系统中的显卡内存大小:... Memory at f0100000 (32-bit, non-prefetchable) [size=512K] I/O ports at 1230 [size=8] Memory at e0000000 (32-bit, prefetchable) [size=256M] Memory at f0000000 (32-bit, non-prefetchable) [size=1M] ...最后使用下面的命令展示当前内存使用量（兆字节）：free -m这条命令告诉你多少内存是空闲的，多少命令正在使用中以及交换内存的大小和是否正在使用。例如，输出信息如下： total used free shared buff/cache available Mem: 11891 1326 8877 212 1687 10077 Swap: 1999 0 1999top 命令为你提供内存使用更加详细的信息。它显示了当前全部内存和 CPU 使用情况并按照进程 ID、用户 ID 及正在运行的命令细分。同时这条命令也是全屏输出:top磁盘文件系统和设备你可以轻松确定有关磁盘、分区、文件系统和其他设备信息。显示每个磁盘设备的描述信息：lshw -short -C disk通过以下命令获取任何指定的 SATA 磁盘详细信息，例如其型号、序列号以及支持的模式和扇区数量等：hdparm -i /dev/sda当然，如果需要的话你应该将 sda 替换成 sdb 或者其他设备号。要列出所有磁盘及其分区和大小，请使用以下命令：lsblk使用以下命令获取更多有关扇区数量、大小、文件系统 ID 和 类型以及分区开始和结束扇区：fdisk -l要启动 Linux，你需要确定 GRUB 引导程序的可挂载分区。你可以使用 blkid 命令找到此信息。它列出了每个分区的唯一标识符（UUID）及其文件系统类型（例如 ext3 或 ext4）：blkid使用以下命令列出已挂载的文件系统和它们的挂载点，以及已用的空间和可用的空间（兆字节为单位）：df -m最后，你可以列出所有的 USB 和 PCI 总线以及其他设备的详细信息：lsusb或lspci网络Linux 提供大量的网络相关命令，下面只是几个例子。查看你的网卡硬件详细信息:lshw -C networkifconfig 是显示网络接口的传统命令：ifconfig -a但是现在很多人们使用：ip link show或netstat -i在阅读输出时，了解常见的网络缩写十分有用：缩写含义lo回环接口eth0 或 enp*以太网接口wlan0无线网接口ppp0点对点协议接口（由拨号调制解调器、PPTP VPN 连接或者 USB 调制解调器使用）vboxnet0 或 vmnet*虚拟机网络接口表中的星号是通配符，代表不同系统的任意字符。使用以下命令显示默认网关和路由表：ip route | column -t或netstat -r软件让我们以显示最底层软件详细信息的两条命令来结束。例如，如果你想知道是否安装了最新的固件该怎么办？这条命令显示了 UEFI 或 BIOS 的日期和版本:dmidecode -t bios内核版本是多少，以及它是 64 位的吗？网络主机名是什么？使用下面的命令查出结果：uname -a快速查询表用途命令显示所有硬件信息inxi -Fxz 或 hwinfo --short 或 lshw -shortCPU 信息lscpu 或 lshw -C cpu显示 CPU 功能（例如 PAE、SSE2）`lshw -C cpugrep -i capabilities`报告 CPU 位数`lshw -C cpugrep -i width`显示当前内存大小和配置`dmidecode -t memorygrep -i size 或 lshw -short -C memory`显示硬件支持的最大内存`dmidecode -t memorygrep -i max`确定是否有空闲内存插槽`lshw -short -C memorygrep -i empty`（输出为空表示没有可用插槽）确定显卡内存数量`lspcigrep -i vga 然后指定设备号再次使用；例如：lspci -v -s 00:02.0 显卡内存数量就是 prefetchable` 的值显示当前内存使用情况free -m 或 top列出磁盘驱动器lshw -short -C disk显示指定磁盘驱动器的详细信息hdparm -i /dev/sda（需要的话替换掉 sda）列出磁盘和分区信息lsblk（简单） 或 fdisk -l（详细）列出分区 ID（UUID）blkid列出已挂载文件系统挂载点以及已用和可用空间df -m列出 USB 设备lsusb列出 PCI 设备lspci显示网卡详细信息lshw -C network显示网络接口ifconfig -a 或 ip link show 或 netstat -i显示路由表`ip routecolumn -t 或 netstat -r`显示 UEFI/BIOS 信息dmidecode -t bios显示内核版本网络主机名等uname -a你有喜欢的命令被我忽略掉的吗？请添加评论分享给大家。via: https://opensource.com/article/19/9/linux-commands-hardware-information作者：Howard Fosdick 选题：lujun9972 译者：way-ww 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在 Linux 系统上有许多工具可用于查找硬件规格。在这里，我列出了四种最常用的工具，可以获取 Linux 系统的几乎所有硬件（和软件）细节。好在是这些工具在某些 Linux 发行版上默认预装。我在 Ubuntu 18.04 LTS 桌面上测试了这些工具，但是它们也适用于其他 Linux 发行版。1、LSHWlshw（硬件列表）是一个简单但功能齐全的实用程序，它提供了 Linux 系统上的硬件规格的详细信息。它可以报告确切的内存规格、固件版本、主板规格、CPU 版本和速度、缓存规格、总线速度等。信息可以以纯文本、XML 或 HTML 格式输出。它目前支持 DMI（仅限 x86 和 EFI）、Open Firmware 设备树（仅限 PowerPC）、PCI/AGP、ISA PnP（x86）、CPUID（x86）、IDE/ATA/ATAPI、PCMCIA（仅在 x86 上测试过）、USB 和 SCSI。就像我已经说过的那样，Ubuntu 默认预装了 lshw。如果它未安装在你的 Ubuntu 系统中，请使用以下命令安装它：$ sudo apt install lshw lshw-gtk在其他 Linux 发行版上，例如 Arch Linux，运行：$ sudo pacman -S lshw lshw-gtk安装后，运行 lshw 以查找系统硬件详细信息：$ sudo lshw你将看到输出详细的系统硬件。示例输出：使用 lshw 在 Linux 上查找硬件规格请注意，如果你没有以 sudo 权限运行 lshw 命令，则输出可能不完整或不准确。lshw 可以将输出显示为 HTML 页面。为此，请使用：$ sudo lshw -html同样，我们可以将设备树输出为 XML 和 json 格式，如下所示：$ sudo lshw -xml $ sudo lshw -json要输出显示硬件路径的设备树，请使用 -short 选项：$ sudo lshw -short使用 lshw 显示具有硬件路径的设备树要列出设备的总线信息、详细的 SCSI、USB、IDE 和 PCI 地址，请运行：$ sudo lshw -businfo默认情况下，lshw 显示所有硬件详细信息。你还可以使用类选项查看特定硬件详细信息的硬件信息，例如处理器、内存、显示器等。可以使用 lshw -short 或 lshw -businfo 找到类选项。要显示特定硬件详细信息，例如处理器，请执行以下操作：$ sudo lshw -class processor示例输出：*-cpu description: CPU product: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz vendor: Intel Corp. physical id: 4 bus info: [email protected] version: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz serial: To Be Filled By O.E.M. slot: CPU 1 size: 913MHz capacity: 2300MHz width: 64 bits clock: 100MHz capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm arat pln pts md_clear flush_l1d cpufreq configuration: cores=2 enabledcores=1 threads=2类似的，你可以得到系统细节：$ sudo lshw -class system硬盘细节：$ sudo lshw -class disk网络细节：$ sudo lshw -class network内存细节：$ sudo lshw -class memory你也可以像下面这样列出多个设备的细节：$ sudo lshw -class storage -class power -class volume如果你想要查看带有硬件路径的细节信息，加上 -short 选项即可：$ sudo lshw -short -class processor示例输出：H/W path Device Class Description ======================================================= /0/4 processor Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz有时，你可能希望将某些硬件详细信息共享给别人，例如客户支持人员。如果是这样，你可以从输出中删除潜在的敏感信息，如 IP 地址、序列号等，如下所示。$ lshw -sanitizelshw-gtk GUI 工具如果你对 CLI 不熟悉，可以使用 lshw-gtk，这是 lshw 命令行工具的图形界面。它可以从终端或 Dash 中打开。要从终端启动它，只需执行以下操作：$ sudo lshw-gtk这是 lshw 工具的默认 GUI 界面。使用 lshw-gtk 在 Linux 上查找硬件只需双击“Portable Computer”即可进一步展开细节。使用 lshw-gtk GUI 在 Linux 上查找硬件你可以双击后续的硬件选项卡以获取详细视图。有关更多详细信息，请参阅手册页。$ man lshw2、InxiInxi 是我查找 Linux 系统上几乎所有内容的另一个最喜欢的工具。它是一个自由开源的、功能齐全的命令行系统信息工具。它显示了系统硬件、CPU、驱动程序、Xorg、桌面、内核、GCC 版本、进程、RAM 使用情况以及各种其他有用信息。无论是硬盘还是 CPU、主板还是整个系统的完整细节，inxi 都能在几秒钟内更准确地显示它。由于它是 CLI 工具，你可以在桌面或服务器版本中使用它。有关更多详细信息，请参阅以下指南。如何使用 inxi 发现系统细节3、HardinfoHardinfo 将为你提供 lshw 中没有的系统硬件和软件详细信息。HardInfo 可以收集有关系统硬件和操作系统的信息，执行基准测试，并以 HTML 或纯文本格式生成可打印的报告。如果 Ubuntu 中未安装 Hardinfo，请使用以下命令安装：$ sudo apt install hardinfo安装后，Hardinfo 工具可以从终端或菜单中进行。以下是 Hardinfo 默认界面的外观。使用 Hardinfo 在 Linux 上查找硬件正如你在上面的屏幕截图中看到的，Hardinfo 的 GUI 简单直观。所有硬件信息分为四个主要组：计算机、设备、网络和基准。每个组都显示特定的硬件详细信息。例如，要查看处理器详细信息，请单击“设备”组下的“处理器”选项。使用 hardinfo 显示处理器详细信息与 lshw 不同，Hardinfo 可帮助你查找基本软件规范，如操作系统详细信息、内核模块、区域设置信息、文件系统使用情况、用户/组和开发工具等。使用 hardinfo 显示操作系统详细信息Hardinfo 的另一个显着特点是它允许我们做简单的基准测试来测试 CPU 和 FPU 功能以及一些图形用户界面功能。使用 hardinfo 执行基准测试建议阅读：Phoronix 测试套件 - 开源测试和基准测试工具UnixBench - 类 Unix 系统的基准套件如何从命令行对 Linux 命令和程序进行基准测试我们可以生成整个系统以及各个设备的报告。要生成报告，只需单击菜单栏上的“生成报告”按钮，然后选择要包含在报告中的信息。使用 hardinfo 生成系统报告Hardinfo 也有几个命令行选项。例如，要生成报告并在终端中显示它，请运行：$ hardinfo -r列出模块：$ hardinfo -l更多信息请参考手册：$ man hardinfo4、SysinfoSysinfo 是 HardInfo 和 lshw-gtk 实用程序的另一个替代品，可用于获取下面列出的硬件和软件信息。系统详细信息，如发行版版本、GNOME 版本、内核、gcc 和 Xorg 以及主机名。CPU 详细信息，如供应商标识、型号名称、频率、L2 缓存、型号和标志。内存详细信息，如系统全部内存、可用内存、交换空间总量和空闲、缓存、活动/非活动的内存。存储控制器，如 IDE 接口、所有 IDE 设备、SCSI 设备。硬件详细信息，如主板、图形卡、声卡和网络设备。让我们使用以下命令安装 sysinfo：$ sudo apt install sysinfoSysinfo 可以从终端或 Dash 启动。要从终端启动它，请运行：$ sysinfo这是 Sysinfo 实用程序的默认界面。sysinfo 界面如你所见，所有硬件（和软件）详细信息都分为五类，即系统、CPU、内存、存储和硬件。单击导航栏上的类别以获取相应的详细信息。使用 Sysinfo 在 Linux 上查找硬件更多细节可以在手册页上找到。$ man sysinfo就这样。就像我已经提到的那样，可以有很多工具可用于显示硬件/软件规范。但是，这四个工具足以找到你的 Linux 发行版的所有软硬件规格信息。via: https://www.ostechnix.com/getting-hardwaresoftware-specifications-in-linux-mint-ubuntu/作者：sk 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在 Linux 中查看系统硬件制造商、型号和序列号
对于 Linux 图形界面用户和 Windows 用户来说获取系统硬件信息都不算问题，但是对命令行用户来说想要获取这些细节时有点儿麻烦。甚至我们中的大多数都不知道获取这些信息最好的命令是什么。Linux 中有许多可用的工具集来获取诸如制造商、型号和序列号等硬件信息。在这里我尝试写下获取这些细节的可能的方式，你可以挑选一种最好用的。你必须知道所有这些信息，因为当你向硬件制造商提交任何硬件问题时，你会需要它们。这可以通过 6 种方法来实现，下面我来演示一下怎么做。方法一：使用 dmidecode 命令dmidecode 是一个读取电脑 DMI（ 桌面管理接口 Desktop Management Interface ）表内容并且以人类可读的格式显示系统硬件信息的工具。（也有人说是读取 SMBIOS —— 系统管理 BIOS System Management BIOS ）这个表包含系统硬件组件的说明，也包含如序列号、制造商、发布日期以及 BIOS 修订版本号等其它有用的信息。DMI 表不仅描述了当前的系统构成，还可以报告可能的升级信息（比如可以支持的最快的 CPU 或者最大的内存容量）。这将有助于分析你的硬件兼容性，比如是否支持最新版本的程序。# dmidecode -t system # dmidecode 2.12 # SMBIOS entry point at 0x7e7bf000 SMBIOS 2.7 present. Handle 0x0024, DMI type 1, 27 bytes System Information Manufacturer: IBM Product Name: System x2530 M4: -[1214AC1]- Version: 0B Serial Number: MK2RL11 UUID: 762A99BF-6916-450F-80A6-B2E9E78FC9A1 Wake-up Type: Power Switch SKU Number: Not Specified Family: System X Handle 0x004B, DMI type 12, 5 bytes System Configuration Options Option 1: JP20 pin1-2: TPM PP Disable, pin2-3: TPM PP Enable Handle 0x004D, DMI type 32, 20 bytes System Boot Information Status: No errors detected 推荐阅读： Dmidecode –– 获取 Linux 系统硬件信息的简单方式方法二：使用 inxi 命令inxi 是 Linux 上查看硬件信息的一个灵巧的小工具，它提供了大量的选项来获取所有硬件信息，这是我在现有的其它 Linux 工具集里所没见到过的。它是从 locsmif 编写的古老的但至今看来都异常灵活的 infobash fork 出来的。inxi 是一个可以快速显示系统硬件、CPU、驱动、Xorg、桌面、内核、GCC 版本、进程、内存使用以及大量其它有用信息的脚本，也可以用来做技术支持和调试工具。# inxi -M Machine: Device: server System: IBM product: N/A v: 0B serial: MK2RL11 Mobo: IBM model: 00Y8494 serial: 37M17D UEFI: IBM v: -[VVE134MUS-1.50]- date: 08/30/2013 推荐阅读： inxi —— 一个很棒的查看 Linux 硬件信息的工具方法三：使用 lshw 命令lshw（指 硬件监听器 Hardware Lister ）是一个小巧灵活的工具，可以生成如内存配置、固件版本、主板配置、CPU 版本和速度、缓存配置、USB、网卡、显卡、多媒体、打印机以及总线速度等机器中各种硬件组件的详细报告。它通过读取 /proc 目录下各种文件的内容和 DMI 表来生成硬件信息。lshw 必须以超级用户的权限运行来检测完整的硬件信息，否则它只汇报部分信息。lshw 里有一个叫做 class 的特殊选项，它可以以详细的模式显示特定的硬件信息。# lshw -C system enal-dbo01t description: Blade product: System x2530 M4: -[1214AC1]- vendor: IBM version: 0B serial: MK2RL11 width: 64 bits capabilities: smbios-2.7 dmi-2.7 vsyscall32 configuration: boot=normal chassis=enclosure family=System X uuid=762A99BF-6916-450F-80A6-B2E9E78FC9A1 推荐阅读： LSHW (Hardware Lister) –– 获取 Linux 硬件信息的灵巧的小工具方法四：使用 /sys 文件系统内核在 /sys 目录下的文件中公开了一些 DMI 信息。因此，我们可以通过如下方式运行 grep 命令来轻易地获取机器类型。# grep "" /sys/class/dmi/id/[pbs]* 或者，可以使用 cat 命令仅打印出特定的详细信息。# cat /sys/class/dmi/id/board_vendor IBM # cat /sys/class/dmi/id/product_name System x2530 M4: -[1214AC1]- # cat /sys/class/dmi/id/product_serial MK2RL11 # cat /sys/class/dmi/id/bios_version -[VVE134MUS-1.50]- 方法五：使用 dmesg 命令dmesg 命令是在 Linux 上 syslogd 或 klogd 启动前用来记录内核消息（启动阶段的消息）的。它通过读取内核的环形缓冲区来获取数据。在排查问题或只是尝试获取系统硬件信息时，dmesg 非常有用。# dmesg | grep -i DMI DMI: System x2530 M4: -[1214AC1]-/00Y8494, BIOS -[VVE134MUS-1.50]- 08/30/2013 方法六：使用 hwinfo 命令hwinfo（ 硬件信息 hardware information ）是另一个很棒的工具，用于检测当前系统存的硬件，并以人类可读的方式显示各种硬件模块的详细信息。它报告关于 CPU、内存、键盘、鼠标、显卡、声卡、存储、网络接口、磁盘、分区、BIOS 以及桥接器等信息。它可以比其它像 lshw、dmidecode 或 inxi 等工具显示更为详细的信息。hwinfo 使用 libhd 库 libhd.so 来收集系统上的硬件信息。该工具是为 openSuse 特别设计的，后来其它发行版也将它包含在其官方仓库中。# hwinfo | egrep "system.hardware.vendor|system.hardware.product" system.hardware.vendor = 'IBM' system.hardware.product = 'System x2530 M4: -[1214AC1]-' 推荐阅读： hwinfo (Hardware Info) –– 一款灵活的检测 Linux 系统硬件信息的工具via: https://www.2daygeek.com/how-to-check-system-hardware-manufacturer-model-and-serial-number-in-linux/作者：VINOTH KUMAR 选题：lujun9972 译者：icecoobe 校对：pityonline本文由 LCTT 原创编译，Linux中国 荣誉推出