通过这些命令可以查看 Linux 系统硬件、内核、发行版、主机名、正常运行时间等详细信息。
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 对于查询这些核心系统详细信息非常有用。一些选项包括:
上述命令打印了扩展系统信息,包括内核名称/版本、硬件架构、主机名和操作系统。
[root@xx ~] uname -r
4.19.188-10.el7.ucloud.x86_64
这将只打印内核版本号。 uname 命令显示 Linux 系统核心组件的详细信息。
hostname 命令将打印或设置网络中 Linux 系统的主机名标识符。在没有参数的情况下,它会显示当前的主机名。传递名称将更新主机名。
例子:
[root@linuxserver ~] hostname
linuxserver
将显示配置的系统主机名 linuxserver。
[root@linuxserver ~] hostname UbuntuServer
# 不用reboot,打开新窗口后显示[root@UbuntuServer ~]
hostnames 标识网络上的系统。 hostname 获取或配置网络上系统的标识名称。第二条命令可以帮助你将本地主机名更改为 UbuntuServer。
PS:使用 hostname 命令修改主机名只会暂时更改主机名,并不会永久保存。当你重启系统或注销用户会话后,主机名会恢复到原来的设置。
永久修改主机名需要执行命令:hostnamectl set-hostname newhostname 或者vim /etc/hostname,同样即时生效不用reboot
uptime 命令显示 Linux 系统自上次重启以来已经运行了多长时间。它会打印出运行时间和当前时间。
只需运行以下命令即可获取系统运行时间数据:
uptime
23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05
这将打印系统正常运行时间,显示系统自上次启动以来的运行时间。
还输出了两点信息,记不清的伙伴请看 6个Linux进程管理命令 - top 的第一行
whoami 命令将打印当前登录系统用户的有效用户名。
该命令(who am I的缩写)显示当前使用的whoami用户名:
whoami
# root
使用echo和环境变量$USER可以得到相同的结果:
echo $USER
# root
这将打印当前用户登录和操作的有效用户名,在脚本或诊断中非常有用,可用于识别正在执行操作的用户账户。
id 命令打印有关当前用户有效 ID 和名称的详细用户和组信息。其中包括
有用的选项:
这些示例可以帮助您了解如何使用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命令输出内容的意思:
简而言之,输出显示了用户"john"的用户ID、主要组ID以及附加组ID的信息。用户"john"的UID为1000,所属的主要组ID也为1000,同时还属于其他两个附加组,分别是"wheel"(GID为10)和"developers"(GID为998)。
这些信息对于了解用户的身份和所属组是很有用的,可以用于控制访问权限和资源共享等方面。
lscpu 命令显示详细的 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_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
BIOS Vendor ID: Red Hat
Model name: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
BIOS Model name: RHEL 7.6.0 PC (i440FX + PIIX, 1996)
CPU family: 6
Model: 79
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 1
BogoMIPS: 5000.05
Flags: 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 pdp
e1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16
pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnow
prefetch 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-x
Hypervisor vendor: KVM
Virtualization 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): 1
NUMA node0 CPU(s): 0,1
Vulnerabilities:
Itlb multihit: Not affected
L1tf: Mitigation; PTE Inversion; VMX flush not necessary, SMT disabled
Mds: Mitigation; Clear CPU buffers; SMT Host state unknown
Meltdown: Mitigation; PTI
Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Retbleed: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Srbds: Not affected
Tsx 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的详细描述,包括体系结构、核心数量、缓存大小、支持的特性、虚拟化技术、安全漏洞缓解措施等。这些信息对于了解系统的硬件配置、性能特征和安全性非常有用。
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 /
每一列的解释:
有两行输出:
这些信息可以帮助您了解系统中的块设备及其挂载情况。
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
可以看到,它列出了当前加载的内核模块(如设备驱动程序)。在本例中,它显示了网络、输入、加密和加密模块的使用情况。
详细介绍:
示例输出:
常用的lsmod命令选项结合使用的命令:
modinfo
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"模块。
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
搜索 “错误” 会显示加载特定固件时出现的问题。这将打印缓冲的内核日志信息,包括启动、错误、警告等系统事件。