Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2019-10-04 12:17:51 +08:00
commit 69abd23748
3 changed files with 418 additions and 447 deletions

View File

@ -0,0 +1,363 @@
[#]: collector: (lujun9972)
[#]: translator: (way-ww)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11422-1.html)
[#]: subject: (Linux commands to display your hardware information)
[#]: via: (https://opensource.com/article/19/9/linux-commands-hardware-information)
[#]: author: (Howard Fosdick https://opensource.com/users/howtechhttps://opensource.com/users/sethhttps://opensource.com/users/sethhttps://opensource.com/users/seth)
用 Linux 命令显示硬件信息
======
> 通过命令行获取计算机硬件详细信息。
![](https://img.linux.net.cn/data/attachment/album/201910/04/120618q2k1fflrsy1bgbwp.jpg)
你可能会有很多的原因需要查清计算机硬件的详细信息。例如,你需要修复某些问题并在论坛上发出请求,人们可能会立即询问你的计算机具体的信息。或者当你想要升级计算机配置时,你需要知道现有的硬件型号和能够升级的型号。这些都需要查询你的计算机具体规格信息。
最简单的方法是使用标准的 Linux GUI 程序之一:
* [i-nex][2] 收集硬件信息,并且类似于 Windows 下流行的 [CPU-Z][3] 的显示。
* [HardInfo][4] 显示硬件具体信息,甚至包括一组八个的流行的性能基准程序,你可以用它们评估你的系统性能。
* [KInfoCenter][5] 和 [Lshw][6] 也能够显示硬件的详细信息,并且可以从许多软件仓库中获取。
或者,你也可以拆开计算机机箱去查看硬盘、内存和其他设备上的标签信息。或者你可以在系统启动时,按下[相应的按键][7]进入 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
```
```
lshw
```
### CPU 详细信息
通过命令你可以了解关于你的 CPU 的任何信息。使用 `lscpu` 命令或与它相近的 `lshw` 命令查看 CPU 的详细信息:
```
lscpu
```
```
lshw -C cpu
```
在这两个例子中,输出的最后几行都列出了所有 CPU 的功能。你可以查看你的处理器是否支持特定的功能。
使用这些命令的时候,你可以通过使用 `grep` 命令过滤复杂的信息,并缩小所需信息范围。例如,只查看 CPU 品牌和型号:
```
lshw -C cpu | grep -i product
```
仅查看 CPU 的速度(兆赫兹):
```
lscpu | grep -i mhz
```
或其 [BogoMips][8] 额定功率:
```
lscpu | grep -i bogo
```
`grep` 命令的 `-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        1999
```
`top` 命令为你提供内存使用更加详细的信息。它显示了当前全部内存和 CPU 使用情况并按照进程 ID、用户 ID 及正在运行的命令细分。同时这条命令也是全屏输出:
```
top
```
### 磁盘文件系统和设备
你可以轻松确定有关磁盘、分区、文件系统和其他设备信息。
显示每个磁盘设备的描述信息:
```
lshw -short -C disk
```
通过以下命令获取任何指定的 SATA 磁盘详细信息,例如其型号、序列号以及支持的模式和扇区数量等:
```
hdparm -i /dev/sda
```
当然,如果需要的话你应该将 `sda` 替换成 `sdb` 或者其他设备号。
要列出所有磁盘及其分区和大小,请使用以下命令:
```
lsblk
```
使用以下命令获取更多有关扇区数量、大小、文件系统 ID 和 类型以及分区开始和结束扇区:
```
fdisk -l
```
要启动 Linux你需要确定 [GRUB][9] 引导程序的可挂载分区。你可以使用 `blkid` 命令找到此信息。它列出了每个分区的唯一标识符UUID及其文件系统类型例如 ext3 或 ext4
```
blkid
```
使用以下命令列出已挂载的文件系统和它们的挂载点,以及已用的空间和可用的空间(兆字节为单位):
```
df -m
```
最后,你可以列出所有的 USB 和 PCI 总线以及其他设备的详细信息:
```
lsusb
```
```
lspci
```
### 网络
Linux 提供大量的网络相关命令,下面只是几个例子。
查看你的网卡硬件详细信息:
```
lshw -C network
```
`ifconfig` 是显示网络接口的传统命令:
```
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  -short`
CPU 信息 | `lscpu``lshw -C cpu`
显示 CPU 功能(例如 PAE、SSE2 | `lshw -C cpu | grep -i capabilities`
报告 CPU 位数 | `lshw -C cpu | grep -i width`
显示当前内存大小和配置 | `dmidecode -t memory | grep -i size` 或 `lshw -short -C memory`
显示硬件支持的最大内存 | `dmidecode -t memory | grep -i max`
确定是否有空闲内存插槽 | `lshw -short -C memory | grep -i empty`(输出为空表示没有可用插槽)
确定显卡内存数量 | `lspci | grep -i vga` 然后指定设备号再次使用;例如:`lspci -v -s 00:02.0` 显卡内存数量就是 `prefetchable` 的值
显示当前内存使用情况 | `free -m``top`
列出磁盘驱动器 | `lshw -short -C disk`
显示指定磁盘驱动器的详细信息 | `hdparm -i /dev/sda`(需要的话替换掉 `sda`
列出磁盘和分区信息 | `lsblk`(简单) 或 `fdisk -l`(详细)
列出分区 IDUUID| `blkid`
列出已挂载文件系统挂载点以及已用和可用空间 | `df -m`
列出 USB 设备 | `lsusb`
列出 PCI 设备 | `lspci`
显示网卡详细信息 | `lshw -C network`
显示网络接口 | `ifconfig -a` 或 `ip link show``netstat -i`
显示路由表 | `ip route | column -t``netstat -r`
显示 UEFI/BIOS 信息 | `dmidecode -t bios`
显示内核版本网络主机名等 | `uname -a`
你有喜欢的命令被我忽略掉的吗?请添加评论分享给大家。
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/9/linux-commands-hardware-information
作者:[Howard Fosdick][a]
选题:[lujun9972][b]
译者:[way-ww](https://github.com/way-ww)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/howtechhttps://opensource.com/users/sethhttps://opensource.com/users/sethhttps://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/features_solutions_command_data.png?itok=4_VQN3RK (computer screen )
[2]: http://sourceforge.net/projects/i-nex/
[3]: https://www.cpuid.com/softwares/cpu-z.html
[4]: http://sourceforge.net/projects/hardinfo.berlios/
[5]: https://userbase.kde.org/KInfoCenter
[6]: http://www.binarytides.com/linux-lshw-command/
[7]: http://www.disk-image.com/faq-bootmenu.htm
[8]: https://en.wikipedia.org/wiki/BogoMips
[9]: https://www.dedoimedo.com/computers/grub.html

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (wxy)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
@ -7,42 +7,46 @@
[#]: via: (https://www.linuxtechi.com/record-replay-linux-terminal-sessions-activity/)
[#]: author: (Pradeep Kumar https://www.linuxtechi.com/author/pradeep/)
Learn how to Record and Replay Linux Terminal Sessions Activity
在 Linux 上记录和重放终端会话活动
======
Generally, all Linux administrators use **history** command to track which commands were executed in previous sessions, but there is one limitation of history command is that it doesnt store the commands output. There can be some scenarios where we want to check commands output of previous session and want to compare it with current session. Apart from this, there are some situations where we are troubleshooting the issues on Linux production boxes and want to save all terminal session activities for future reference, so in such cases script command become handy.
通常Linux 管理员们都使用 `history` 命令来跟踪在先前的会话中执行过哪些命令,但是 `history` 命令的局限性在于它不存储命令的输出。在某些情况下,我们要检查上一个会话的命令输出,并希望将其与当前会话进行比较。除此之外,在某些情况下,我们正在对 Linux 生产环境中的问题进行故障排除,并希望保存所有终端会话活动以供将来参考,因此在这种情况下,`script` 命令就变得很方便。
<https://www.linuxtechi.com/wp-content/uploads/2019/06/Record-linux-terminal-session-activity.jpg>
![](https://www.linuxtechi.com/wp-content/uploads/2019/06/Record-linux-terminal-session-activity.jpg)
Script is a command line tool which is used to capture or record your Linux server terminal sessions activity and later the recorded session can be replayed using scriptreplay command. In this article we will demonstrate how to install script command line tool and how to record Linux server terminal session activity and then later we will see how the recorded session can be replayed using **scriptreplay** command.
`script` 是一个命令行工具,用于捕获/记录你的 Linux 服务器终端会话活动,以后可以使用 `scriptreplay` 命令重放记录的会话。在本文中,我们将演示如何安装 `script` 命令行工具以及如何记录 Linux 服务器终端会话活动,然后,我们将看到如何使用 `scriptreplay` 命令来重放记录的会话。
### Installation of Script tool on RHEL 7/ CentOS 7
### 安装 script 工具
Script command is provided by the rpm package “**util-linux**”, in case it is not installed on your CentOS 7 / RHEL 7 system , run the following yum command,
#### 在 RHEL 7/ CentOS 7 上安装 script 工具
如果未在 CentOS 7 / RHEL 7系统上安装rpm软件包“`-util-linux”则提供脚本命令请运行以下yum命令
`script` 命令由 RPM 包 `util-linux` 提供,如果你没有在你的 CentOS 7 / RHEL 7 系统上安装它,运行下面的 `yum` 安装它:
```
[root@linuxtechi ~]# yum install util-linux -y
```
**On RHEL 8 / CentOS 8**
#### 在 RHEL 8 / CentOS 8 上安装 script 工具
Run the following dnf command to install script utility on RHEL 8 and CentOS 8 system,
运行下面的 `dnf` 命令来在 RHEL 8 / CentOS 8 上安装 `script` 工具:
```
[root@linuxtechi ~]# dnf install util-linux -y
```
**Installation of Script tool on Debian based systems (Ubuntu / Linux Mint)**
#### 在基于 Debian 的系统Ubuntu / Linux Mint上安装 script 工具
Execute the beneath apt-get command to install script utility
运行下面的 `apt-get` 命令来安装 `script` 工具:
```
root@linuxtechi ~]# apt-get install util-linux -y
```
### How to Use script utility
### 如何使用 script 工具
Use of script command is straight forward, type script command on terminal then hit enter, it will start capturing your current terminal session activities inside a file called “**typescript**”
直接使用 `script` 命令,在终端上键入 `script` 命令,然后按回车,它将开始在名为 `typescript` 的文件中捕获当前的终端会话活动。
```
[root@linuxtechi ~]# script
@ -50,7 +54,7 @@ Script started, file is typescript
[root@linuxtechi ~]#
```
To stop recording the session activities, type exit command and hit enter.
要停止记录会话活动,请键入 `exit` 命令,然后按回车
```
[root@linuxtechi ~]# exit
@ -59,23 +63,23 @@ Script done, file is typescript
[root@linuxtechi ~]#
```
Syntax of Script command:
`script` 命令的语法格式:
```
~ ] # script {options} {file_name}
~] # script {options} {file_name}
```
Different options used in script command,
能在 `script` 命令中使用的不同选项:
![options-script-command][1]
Lets start recording of your Linux terminal session by executing script command and then execute couple of command like **w**, **route -n** , [**df -h**][2] and **free-h**, example is shown below
让我们开始通过执行 `script` 命令来记录 Linux 终端会话,然后执行诸如 `w``route -n``df -h` 和 `free- h`,示例如下所示:
![script-examples-linux-server][3]
As we can see above, terminal session logs are saved in the file “typescript”
正如我们在上面看到的,终端会话日志保存在文件 `typescript` 中:
Now view the contents of typescript file using [cat][4] / vi command,
现在使用 `cat` / `vi` 命令查看 `typescript` 文件的内容,
```
[root@linuxtechi ~]# ls -l typescript
@ -85,11 +89,12 @@ Now view the contents of typescript file using [cat][4] / vi command,
![typescript-file-content-linux][5]
Above confirms that whatever commands we execute on terminal that have been saved inside the file “typescript”
以上内容确认了我们在终端上执行的所有命令都已保存在 `typescript` 文件中。
### Use Custom File name in script command
Lets assume we want to use our customize file name to script command, so specify the file name after script command, in the below example we are using a file name “session-log-(current-date-time).txt”
### 在 script 命令中使用定制文件名
假设我们要使用自定义文件名来执行脚本命令,可以在脚本命令后指定文件名。在下面的示例中,我们使用的文件名为 `session-log-(当前日期时间).txt`
```
[root@linuxtechi ~]# script sessions-log-$(date +%d-%m-%Y-%T).txt
@ -97,7 +102,7 @@ Script started, file is sessions-log-21-06-2019-01:37:39.txt
[root@linuxtechi ~]#
```
Now run the commands and then type exit,
现在运行该命令并输入 `exit`
```
[root@linuxtechi ~]# exit
@ -106,9 +111,9 @@ Script done, file is sessions-log-21-06-2019-01:37:39.txt
[root@linuxtechi ~]#
```
### Append the commands output to script file
### 附加命令输出到 script 记录文件
Let assume script command had already recorded the commands output to a file called session-log.txt file and now we want to append output of new sessions commands output to this file, then use “**-a**” command in script command
假设 `script` 命令已经将命令输出记录到名为 `session-log.txt` 的文件中,现在我们想将新会话命令的输出附加到该文件中,那么可以在脚本命令中使用 `-a` 选项。
```
[root@linuxtechi ~]# script -a sessions-log.txt
@ -129,11 +134,11 @@ Script done, file is sessions-log.txt
[root@linuxtechi ~]#
```
To view updated sessions logs, use “cat session-log.txt ”
要查看更新的会话记录,使用 `cat session-log.txt` 命令。
### Capture commands output to script file without interactive shell
### 无需 shell 交互而捕获命令输出到 script 记录文件
Lets assume we want to capture commands output to a script file, then use **-c** option, example is shown below,
假设我们要捕获命令的输出到 script 记录文件,那么使用 `-c` 选项,示例如下所示:
```
[root@linuxtechi ~]# script -c "uptime && hostname && date" root-session.txt
@ -145,9 +150,9 @@ Script done, file is root-session.txt
[root@linuxtechi ~]#
```
### Run script command in quiet mode
### 以静默模式运行 script 命令
To run script command in quiet mode use **-q** option, this option will suppress the script started and script done message, example is shown below,
要以静默模式运行 `script` 命令,请使用 `-q` 选项,该选项将禁止 `script` 的启动和完成消息,示例如下所示:
```
[root@linuxtechi ~]# script -c "uptime && date" -q root-session.txt
@ -156,11 +161,13 @@ Fri Jun 21 02:01:10 EDT 2019
[root@linuxtechi ~]#
```
Record Timing information to a file and capture commands output to a separate file, this can be achieved in script command by passing timing file (**timing**) , example is shown below,
要将时序信息记录到文件中并捕获命令输出到单独的文件中,这可以通过在 `script` 命令中传递时序文件(`-timing`)实现,示例如下所示:
Syntax:
语法格式:
~ ]# script -t &lt;timing-file-name&gt;  {file_name}
```
~ ]# script -t <timing-file-name> {file_name}
```
```
[root@linuxtechi ~]# script --timing=timing.txt session.log
@ -185,23 +192,23 @@ Script done, file is session.log
[root@linuxtechi ~]#
```
### Replay recorded Linux terminal session activity
### 重放记录的 Linux 终端会话活动
Now replay the recorded terminal session activities using scriptreplay command,
现在,使用 `scriptreplay` 命令重放录制的终端会话活动。
**Note:** Scriptreplay is also provided by rpm package “**util-linux**”. Scriptreplay command requires timing file to work.
注意:`scriptreplay` 也由 RPM 包 `util-linux` 提供。`scriptreplay` 命令需要时序文件才能工作。
```
[root@linuxtechi ~]# scriptreplay --timing=timing.txt session.log
```
Output of above command would be something like below,
上面命令的输出将如下所示,
<https://www.linuxtechi.com/wp-content/uploads/2019/06/scriptreplay-linux.gif>
![](https://www.linuxtechi.com/wp-content/uploads/2019/06/scriptreplay-linux.gif)
### Record all Users Linux terminal session activities
### 记录所有用户的 Linux 终端会话活动
There are some business critical Linux servers where we want keep track on all users activity, so this can be accomplished using script command, place the following content in /etc/profile file ,
在某些关键业务的 Linux 服务器上,我们希望跟踪所有用户的活动,这可以使用 `script` 命令来完成,将以下内容放在 `/etc/profile` 文件中,
```
[root@linuxtechi ~]# vi /etc/profile
@ -218,22 +225,22 @@ fi
……………………………………………………
```
Save &amp; exit the file.
保存文件并退出。
Create the session directory under /var/log folder,
`/var/log` 文件夹下创建 `session` 目录:
```
[root@linuxtechi ~]# mkdir /var/log/session
```
Assign the permissions to session folder,
给该文件夹指定权限:
```
[root@linuxtechi ~]# chmod 777 /var/log/session/
[root@linuxtechi ~]#
```
Now verify whether above code is working or not. Login to ordinary user to linux server, in my I am using pkumar user,
现在,验证以上代码是否有效。在我正在使用 `pkumar` 用户的情况下,登录普通用户到 Linux 服务器:
```
~ ] # ssh root@linuxtechi
@ -263,13 +270,13 @@ Login as root and view users linux terminal session activity
![Session-output-file-linux][6]
We can also use scriptreplay command to replay users terminal session activities,
我们还可以使用 `scriptreplay` 命令来重放用户的终端会话活动:
```
[root@linuxtechi session]# scriptreplay --timing session.pkumar.19785.21-06-2019-04\:34\:05.timing session.pkumar.19785.21-06-2019-04\:34\:05
```
Thats all from this tutorial, please do share your feedback and comments in the comments section below.
以上就是本教程的全部内容,请在下面的评论部分中分享你的反馈和评论。
--------------------------------------------------------------------------------
@ -277,7 +284,7 @@ via: https://www.linuxtechi.com/record-replay-linux-terminal-sessions-activity/
作者:[Pradeep Kumar][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
译者:[wxy](https://github.com/wxy)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,399 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (way-ww)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Linux commands to display your hardware information)
[#]: via: (https://opensource.com/article/19/9/linux-commands-hardware-information)
[#]: author: (Howard Fosdick https://opensource.com/users/howtechhttps://opensource.com/users/sethhttps://opensource.com/users/sethhttps://opensource.com/users/seth)
Linux 命令行显示硬件信息
======
通过命令行获取电脑硬件详细信息
![computer screen ][1]
你可能会有很多的原因需要查清计算机硬件的详细信息。 例如, 你需要修复某些问题并在论坛上发出请求, 人们可能会立即询问你的计算机具体的信息。 或者当你想要升级计算机配置时, 你需要知道现有的硬件型号和能够升级的型号。 这些都需要查询你的计算机具体规格信息。
最简单的方法是使用标准的 Linux GUI 程序之一:
* [i-nex][2] 收集硬件信息并且像 Windows 下流行的 [CPU-Z][3] 方式显示。
* [HardInfo][4] 显示硬件具体信息甚至包括一组八个的流行的基础程序你可以用它们评估你的系统性能。
* [KInfoCenter][5] 和 [Lshw][6] 也能够显示硬件的详细信息并且可以从许多软件仓库中获取。
或者, 你也可以拆开电脑外盒去阅读硬盘, 内存和其他设备上的标签信息。 或者你可以在系统启动时, 按下相应的按键进入 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
```
```
lshw
```
### CPU 详细信息
通过命令你可以了解关于你的 CPU 的任何信息。 使用 **lscpu** 命令或与它相近的 **lshw** 命令查看 CPU 的详细信息:
```
lscpu
```
```
lshw -C cpu
```
在这俩个例子中, 输出的最后几行都列出了所有 CPU 的功能。 你可以查看你的处理器是否支持特定的功能。
使用这些命令的时候, 你可以通过使用 **grep** 命令过滤复杂的信息, 并缩小所需信息范围。 例如, 只查看 CPU 品牌和型号:
```
lshw -C cpu | grep -i product
```
仅查看 CPU 的速度(兆赫兹):
```
lscpu | grep -i mhz
```
或其 [BogoMips][8] 额定功率:
```
lscpu | grep -i bogo
```
**grep** 命令的 **-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        1999
```
**top** 命令为你提供内存使用更加详细的信息。 它显示了当前全部内存和 CPU 使用情况并按照进程 ID 用户 ID及正在运行的命令细分。 同时这条命令也是全屏输出:
```
top
```
### 磁盘文件系统和设备
你可以轻松确定有关磁盘, 分区, 文件系统和其他设备信息。
显示每个磁盘设备的描述信息:
```
lshw -short -C disk
```
通过以下命令获取任何指定的 SATA 磁盘详细信息, 例如其型号, 序列号以及支持的模式和扇区数量等:
```
hdparm -i /dev/sda
```
当然, 如果需要的话你应该将 **sda** 替换成 **sdb** 或者其他设备号。
要列出所有磁盘及其分区和大小, 请使用以下命令:
```
lsblk
```
使用以下命令获取更多有关扇区数量, 大小, 文件系统 ID 和 类型以及分区开始和结束扇区:
```
fdisk -l
```
要启动 Linux 你需要确定[GRUB][9] 引导程序的安装分区。 你可以使用 **blkid** 命令找到此信息。它列出了每个分区的唯一标识符(UUID) 及其文件系统类型(例如 ext3 或 ext4):
```
blkid
```
使用以下命令列出已挂载的文件系统和它们的挂载点以及已用的空间和可用的空间(兆字节为单位):
```
df -m
```
最后, 你可以列出所有的 USB 和 PCI 总线以及其他设备的详细信息:
```
lsusb
```
```
lspci
```
### 网络
Linux 提供大量的网络相关命令, 下面只是几个例子。
查看你的网卡硬件详细信息:
```
lshw -C network
```
**ifconfig** 是显示网络接口的传统命令:
```
ifconfig -a
```
但是现在很多人们使用:
```
ip link show
```
```
netstat -i
```
在阅读输出时, 了解常见的网络缩写十分有用:
**缩写** | **含义**
---|---
**lo** | 回环接口
**eth0** or **enp*** | 以太网接口
**wlan0** | 无线网接口
**ppp0** | 点对点协议接口由拨号调制解调器PPTP VPN连接或者 USB 调制解调器使用)
**vboxnet0** or **vmnet*** | 虚拟机网络接口
表中的星号是通配符, 用作系统间出现的任何字符的占位符。
使用以下命令显示默认网关和路由表:
```
ip route | column -t
```
```
netstat -r
```
### 软件
让我们以显示最底层软件详细信息的俩条命令来结束。 例如, 如果你想知道是否安装了最新的固件该怎么办?这条命令显示了 UEFI 或 BIOS 的日期和版本:
```
dmidecode -t bios
```
内核版本是多少以及它是 64 位的吗? 网络主机名是什么? 使用下面的命令查出结果:
```
uname -a
```
### 快速查询表
显示所有硬件信息 | **inxi -Fxz****hwinfo --short** 或 **lshw  -short**
---|---
CPU 信息 | **lscpu** 或 **lshw -C cpu**
显示 CPU 功能(例如 PAE, SSE2) | **lshw -C cpu \| grep -i capabilities**
报告 CPU 位数 | **lshw -C cpu \| grep -i width**
显示当前内存大小和配置 | **dmidecode -t memory \| grep -i size** 或 **lshw -short -C memory**
显示硬件支持的最大内存 | **dmidecode -t memory \| grep -i max**
确定是否有空闲内存插槽 | **lshw -short -C memory \| grep -i empty**(输出为空表示没有可用插槽)
确定显卡内存数量 | **lspci \| grep -i vga** 然后指定设备号再次使用; 例如:  **lspci -v -s 00:02.0** 显卡内存数量就是  prefetchable 的值
显示当前内存使用情况 | **free -m** 或 **top**
列出磁盘驱动器 | **lshw -short -C disk**
显示指定磁盘驱动器的详细信息 | **hdparm -i /dev/sda**(需要的话替换掉 **sda** )
列出磁盘和分区信息 | **lsblk**  (简单)   或 **fdisk -l**   (详细)
列出分区 IDs (UUIDs) | **blkid**
列出已挂载文件系统挂载点以及已用和可用空间 | **df -m**
列出 USB 设备 | **lsusb**
列出 PCI 设备 | **lspci**
显示网卡详细信息 | **lshw -C network**
显示网络接口 | **ifconfig -a** 或 **ip link show** 或 **netstat -i**
显示路由表 | **ip route \| column -t** 或 **netstat -r**
显示 UEFI/BIOS 信息 | **dmidecode -t bios**
显示内核版本网络主机名等 | **uname -a**
你有喜欢的命令被我忽略掉的吗? 请添加评论分享给大家。
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/9/linux-commands-hardware-information
作者:[Howard Fosdick][a]
选题:[lujun9972][b]
译者:[way-ww](https://github.com/way-ww)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/howtechhttps://opensource.com/users/sethhttps://opensource.com/users/sethhttps://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/features_solutions_command_data.png?itok=4_VQN3RK (computer screen )
[2]: http://sourceforge.net/projects/i-nex/
[3]: https://www.cpuid.com/softwares/cpu-z.html
[4]: http://sourceforge.net/projects/hardinfo.berlios/
[5]: https://userbase.kde.org/KInfoCenter
[6]: http://www.binarytides.com/linux-lshw-command/
[7]: http://www.disk-image.com/faq-bootmenu.htm
[8]: https://en.wikipedia.org/wiki/BogoMips
[9]: https://www.dedoimedo.com/computers/grub.html