通过这些命令可以查看 Linux 系统硬件、内核、发行版、主机名、正常运行时间等详细信息。
1. uname – 打印系统信息
uname 命令可打印 Linux 系统内核、硬件架构、主机名和操作系统的详细信息。其中包括版本号和机器信息。
uname(Unix name的缩写)打印可操作的系统信息,当您知道当前的Linux版本时,这些信息很方便。
大多数情况下,您将使用-a(–all)标志,因为默认输出没有那么有用:
[root@xx ~] uname
Linux
[root@xx ~] uname -a
Linux 10-10-50-210 4.19.188-10.el7.ucloud.x86_64 #1 SMP Wed Apr 28 09:54:38 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
解释uname -a 输出每个部分的含义:
-
10-10-50-210:这是系统的主机名(hostname),它是您的计算机在网络上的标识符。在这个例子中,主机名是"10-10-50-210"。
-
4.19.188-10.el7.ucloud.x86_64:这是Linux内核的版本号。在这个例子中,内核版本是4.19.188-10.el7.ucloud.x86_64。
-
#
1 SMP Wed Apr 28 09:54:38 UTC 2021:这是系统的内核编译信息,包括编译日期和时间。在这个例子中,内核是在2021年4月28日09:54:38(UTC时间)编译的。 -
x86_64 x86_64 x86_64:这表示系统的体系结构(architecture),也就是处理器的类型。在这个例子中,体系结构是x86_64,表示使用的是64位的x86架构处理器。
-
GNU/Linux:这表示系统的操作系统类型。GNU/Linux是一种自由和开放源代码的操作系统,它基于GNU工具和Linux内核。
uname 对于查询这些核心系统详细信息非常有用。一些选项包括:
- -a – 打印所有可用的系统信息
- -r – 只打印内核版本号
上述命令打印了扩展系统信息,包括内核名称/版本、硬件架构、主机名和操作系统。
[root@xx ~] uname -r
4.19.188-10.el7.ucloud.x86_64
这将只打印内核版本号。 uname 命令显示 Linux 系统核心组件的详细信息。
2. hostname – 显示或设置系统主机名
hostname 命令将打印或设置网络中 Linux 系统的主机名标识符。在没有参数的情况下,它会显示当前的主机名。传递名称将更新主机名。
例子:
[root@linuxserver ~] hostname
linuxserver
将显示配置的系统主机名 linuxserver。
[root@linuxserver ~] hostname UbuntuServer
# 命令是即时生效的,不用reboot,打开新窗口后显示[root@UbuntuServer ~]
hostnames 标识网络上的系统。 hostname 获取或配置网络上系统的标识名称。第二条命令可以帮助你将本地主机名更改为 UbuntuServer。
3. uptime – 系统运行了多久
uptime 命令显示 Linux 系统自上次重启以来已经运行了多长时间。它会打印出运行时间和当前时间。
只需运行以下命令即可获取系统运行时间数据:
uptime
23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05
这将打印系统正常运行时间,显示系统自上次启动以来的运行时间。
还输出了两点信息,记不清的伙伴请看 6个Linux进程管理命令 - top 的第一行
4. whoami – 打印有效用户 ID
whoami 命令将打印当前登录系统用户的有效用户名。
该命令(who am I的缩写)显示当前使用的whoami用户名:
whoami
# root
使用echo和环境变量$USER可以得到相同的结果:
echo $USER
# root
这将打印当前用户登录和操作的有效用户名,在脚本或诊断中非常有用,可用于识别正在执行操作的用户账户。
5. id – 打印真实有效的用户和组 ID
id 命令打印有关当前用户有效 ID 和名称的详细用户和组信息。其中包括
有用的选项:
- -u:显示当前用户的用户ID(UID)。
- -g:显示当前用户所属的主要组ID(GID)。
- -G:显示当前用户所属的所有组ID(GID),以空格分隔。
- -n:显示当前用户的用户名。
- -un:显示当前用户的用户名和用户ID(UID)。
这些示例可以帮助您了解如何使用id
命令来获取用户的不同信息。根据您的需求,选择适当的选项即可。
要使用 id 命令,只需键入:
[root@xx ~]# id
uid=1000(john) gid=1000(john) groups=1000(john),10(wheel),998(developers)
[root@xx ~]# id apache
uid=48(apache) gid=48(apache) groups=48(apache)
id命令输出内容的意思:
- uid=1000(john): 这表示用户"john"的用户ID(UID)为1000。
- gid=1000(john): 这表示用户"john"所属的主要组ID(GID)为1000。
- groups=1000(john),10(wheel),998(developers): 这表示用户"john"所属的附加组ID(GID)列表为1000(组名为"john")、10(组名为"wheel")、998(组名为"developers")。
简而言之,输出显示了用户"john"的用户ID、主要组ID以及附加组ID的信息。用户"john"的UID为1000,所属的主要组ID也为1000,同时还属于其他两个附加组,分别是"wheel"(GID为10)和"developers"(GID为998)。
这些信息对于了解用户的身份和所属组是很有用的,可以用于控制访问权限和资源共享等方面。
6. lscpu – 显示 CPU 架构信息
lscpu 命令显示详细的 CPU 架构信息,包括
- CPU 内核数
- 接口数量
- 型号名称
- 缓存大小
- CPU 频率
- 地址大小
要使用 lscpu 命令,只需键入:
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
lscpu 详细列出 CPU 架构,如内核数、插口、型号名称、缓存等。
进一步介绍:
[root@xx ~]# lscpu
Architecture: x86_64CPU op-mode(s): 32-bit, 64-bitAddress sizes: 46 bits physical, 48 bits virtualByte Order: Little Endian
CPU(s): 2On-line CPU(s) list: 0,1
Vendor ID: GenuineIntelBIOS Vendor ID: Red HatModel name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHzBIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996)CPU family: 6Model: 79Thread(s) per core: 1Core(s) per socket: 2Socket(s): 1Stepping: 1BogoMIPS: 5000.05Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat umip md_clear arch_capabilities
Virtualization features: Virtualization: VT-xHypervisor vendor: KVMVirtualization type: full
Caches (sum of all): L1d: 32 KiB (1 instance)L1i: 32 KiB (1 instance)L2: 256 KiB (1 instance)L3: 40 MiB (1 instance)
NUMA: NUMA node(s): 1NUMA node0 CPU(s): 0,1
Vulnerabilities: Itlb multihit: Not affectedL1tf: Mitigation; PTE Inversion; VMX flush not necessary, SMT disabledMds: Mitigation; Clear CPU buffers; SMT Host state unknownMeltdown: Mitigation; PTIMmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknownRetbleed: Not affectedSpec store bypass: Mitigation; Speculative Store Bypass disabled via prctlSpectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitizationSpectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affectedSrbds: Not affectedTsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown
关于系统CPU的信息解释:
Architecture: x86_64
: 这表示系统的体系结构是x86_64,也就是64位的x86架构。CPU op-mode(s): 32-bit, 64-bit
: 这表示CPU支持32位和64位操作模式。Address sizes: 46 bits physical, 48 bits virtual
: 这表示物理地址大小为46位,虚拟地址大小为48位。Byte Order: Little Endian
: 这表示系统使用小端字节序。CPU(s): 2
: 这表示系统有两个CPU核心。On-line CPU(s) list: 0,1
: 这表示在线的CPU核心列表是0和1。Vendor ID: GenuineIntel
: 这表示CPU供应商是Intel。BIOS Vendor ID: Red Hat
: 这表示BIOS供应商是Red Hat。Model name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
: 这表示CPU的型号名称是Intel Xeon E5-2682 v4,主频为2.50GHz。BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996)
: 这表示BIOS的型号名称是RHEL 7.6.0 PC,基于i440FX + PIIX架构。CPU family: 6
: 这表示CPU系列是第6代。Model: 79
: 这表示CPU型号是79。Thread(s) per core: 1
: 这表示每个CPU核心只支持1个线程。Core(s) per socket: 2
: 这表示每个CPU插槽有2个核心。Socket(s): 1
: 这表示系统中只有1个CPU插槽。Stepping: 1
: 这表示CPU的版本号是1。BogoMIPS: 5000.05
: 这是一个性能指标,表示每秒钟可以执行的虚拟指令数。Flags: ...
: 这是一系列标志位,表示CPU支持的特性和指令集。Virtualization: VT-x
: 这表示CPU支持虚拟化技术VT-x。Hypervisor vendor: KVM
: 这表示系统运行在KVM虚拟化平台上。Virtualization type: full
: 这表示系统支持完全虚拟化。Caches (sum of all): ...
: 这是关于CPU缓存的信息,包括L1、L2和L3缓存的大小。NUMA node(s): 1
: 这表示系统中有1个NUMA节点。NUMA node0 CPU(s): 0,1
: 这表示NUMA节点0上有CPU核心0和1。Vulnerabilities: ...
: 这是关于CPU安全漏洞的信息,包括对各种漏洞的缓解措施。
这些信息提供了关于系统CPU的详细描述,包括体系结构、核心数量、缓存大小、支持的特性、虚拟化技术、安全漏洞缓解措施等。这些信息对于了解系统的硬件配置、性能特征和安全性非常有用。
7. lsblk – 列出块设备
lsblk 命令列出所有可用块设备的信息,包括本地磁盘、分区和逻辑卷。输出包括设备名称、标签、大小和挂载点。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1.8T 0 disk
|-sda1 8:1 0 512M 0 part /boot
|-sda2 8:2 0 16M 0 part
`-sda5 8:5 0 1.8T 0 part
`-lvm1 254:0 0 1.8T 0 lvm /
lsblk 列出所有块设备,包括磁盘、分区和逻辑卷。提供存储设备概览。
进一步介绍:
[root@xx ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 60G 0 disk
└─vda1 253:1 0 60G 0 part /
每一列的解释:
- NAME: 显示了块设备的名称,通常以字母开头,后面可能跟着数字或其他字符。
- MAJ:MIN: 显示了块设备的主设备号(Major Device Number)和次设备号(Minor Device Number)。主设备号用于标识设备类型,次设备号用于标识设备的具体实例。
- RM: 显示了设备是否为可移动设备(Removable)。如果为0,则表示设备不可移动;如果为1,则表示设备可移动。
- SIZE: 显示了设备的总大小,以字节、千字节(KB)、兆字节(MB)、千兆字节(GB)或其他适当的单位表示。
- RO: 显示了设备是否为只读(Read-Only)。如果为0,则表示设备可读写;如果为1,则表示设备只读。
- TYPE: 显示了设备的类型,如磁盘(disk)、分区(part)等。
- MOUNTPOINT: 显示了设备当前挂载的路径。如果设备未挂载,则显示为空。
有两行输出:
- 第一行表示一个名为"vda"的磁盘设备,大小为60GB,它没有挂载点。
- 第二行表示"vda"设备的一个分区"vda1",大小也为60GB,它被挂载在根目录"/"下。
这些信息可以帮助您了解系统中的块设备及其挂载情况。
8. lsmod – 显示 Linux 内核模块的状态
lsmod 命令会打印当前加载的内核模块(如设备驱动程序)。这包括 Linux 内核用于连接内部和外部设备的网络、存储和其他硬件相关模块。
[root@xx ~]# lsmod
Module Size Used by
ipv6 406206 27
evdev 17700 0
crct10dif_pclmul 16384 1
crc32_pclmul 16384 0
ghash_clmulni_intel 16384 0
aesni_intel 399871 0
aes_x86_64 20274 1 aesni_intel
可以看到,它列出了当前加载的内核模块(如设备驱动程序)。在本例中,它显示了网络、输入、加密和加密模块的使用情况。
详细介绍:
- Module: 列出了加载的内核模块的名称。
- Size: 显示了模块在内存中的大小,以字节为单位。
- Used by: 显示了使用该模块的其他模块或进程的数量。
示例输出:
- 模块名称是"ipv6"。
- 模块大小为406206字节。
- 该模块被27个模块或进程所使用。
常用的lsmod命令选项结合使用的命令:
-
modinfo <module_name>: 使用modinfo命令结合lsmod输出中的模块名称,可以获取有关特定模块的更详细信息,如作者、描述、版本等。
-
grep : 使用grep命令结合lsmod输出和关键字,可以过滤出包含指定关键字的模块信息。例如,lsmod | grep bluetooth将只显示与蓝牙相关的模块。
-
awk 或 cut: 使用awk或cut命令结合lsmod输出的文本处理功能,可以提取出特定列或信息。例如,lsmod | awk "{print $1}"将只打印出模块名称的列。
例子:
[root@xx ~]# lsmod | grep "xfs"
xfs 2048000 1
libcrc32c 16384 1 xfs
"xfs"的模块它依赖于"libcrc32c"模块。
9. dmesg – 打印或控制内核环缓冲区
dmesg 命令从内核环形缓冲区转储信息。其中包括内核在启动和运行过程中记录的重要系统事件。
dmesg | grep -i error
[ 12.345678] Error receiving batched read response: -110
[ 23.456789] tplink_mdio 0000:03:00.0: Direct firmware load for tplink-mdio/leap_p8_v1_0.bin failed with error -2
[ 40.567890] iwlwifi 0000:09:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-59.ucode failed with error -2
搜索 “错误” 会显示加载特定固件时出现的问题。这将打印缓冲的内核日志信息,包括启动、错误、警告等系统事件。