Loading... 通过这些命令可以查看 Linux 系统硬件、内核、发行版、主机名、正常运行时间等详细信息。 ## 1. uname – 打印系统信息 uname 命令可打印 Linux 系统内核、硬件架构、主机名和操作系统的详细信息。其中包括版本号和机器信息。 uname(Unix name的缩写)打印可操作的系统信息,当您知道当前的Linux版本时,这些信息很方便。 大多数情况下,您将使用-a(–all)标志,因为默认输出没有那么有用: ```bash [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 – 只打印内核版本号 上述命令打印了扩展系统信息,包括内核名称/版本、硬件架构、主机名和操作系统。 ```bash [root@xx ~] uname -r 4.19.188-10.el7.ucloud.x86_64 ``` 这将只打印内核版本号。 uname 命令显示 Linux 系统核心组件的详细信息。 ## 2. hostname – 显示或设置系统主机名 hostname 命令将打印或设置网络中 Linux 系统的主机名标识符。在没有参数的情况下,它会显示当前的主机名。传递名称将更新主机名。 例子: ```bash [root@linuxserver ~] hostname linuxserver ``` 将显示配置的系统主机名 linuxserver。 ```bash [root@linuxserver ~] hostname UbuntuServer # 不用reboot,打开新窗口后显示[root@UbuntuServer ~] ``` hostnames 标识网络上的系统。 hostname 获取或配置网络上系统的标识名称。第二条命令可以帮助你将本地主机名更改为 UbuntuServer。 > PS:使用 hostname 命令修改主机名只会暂时更改主机名,并不会永久保存。当你重启系统或注销用户会话后,主机名会恢复到原来的设置。 > 永久修改主机名需要执行命令:hostnamectl set-hostname newhostname 或者vim /etc/hostname,同样即时生效不用reboot ## 3. uptime – 系统运行了多久 uptime 命令显示 Linux 系统自上次重启以来已经运行了多长时间。它会打印出运行时间和当前时间。 只需运行以下命令即可获取系统运行时间数据: ```bash uptime 23:51:26 up 2 days, 4:12, 1 user, load average: 0.00, 0.01, 0.05 ``` 这将打印系统正常运行时间,显示系统自上次启动以来的运行时间。 还输出了两点信息,记不清的伙伴请看 [6个Linux进程管理命令 - top](https://blog.csdn.net/heshihu2019/article/details/135534630) 的第一行 ## 4. whoami – 打印有效用户 ID whoami 命令将打印当前登录系统用户的有效用户名。 该命令(who am I的缩写)显示当前使用的whoami用户名: ```bash whoami # root ``` 使用echo和环境变量$USER可以得到相同的结果: ```bash echo $USER # root ``` 这将打印当前用户登录和操作的有效用户名,在脚本或诊断中非常有用,可用于识别正在执行操作的用户账户。 ## 5. id – 打印真实有效的用户和组 ID id 命令打印有关当前用户有效 ID 和名称的详细用户和组信息。其中包括 有用的选项: - -u:显示当前用户的用户ID(UID)。 - -g:显示当前用户所属的主要组ID(GID)。 - -G:显示当前用户所属的所有组ID(GID),以空格分隔。 - -n:显示当前用户的用户名。 - -un:显示当前用户的用户名和用户ID(UID)。 这些示例可以帮助您了解如何使用`id`命令来获取用户的不同信息。根据您的需求,选择适当的选项即可。 要使用 id 命令,只需键入: ```bash [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 命令,只需键入: ```bash 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 架构,如内核数、插口、型号名称、缓存等。 **进一步介绍:** ```bash [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的详细描述,包括体系结构、核心数量、缓存大小、支持的特性、虚拟化技术、安全漏洞缓解措施等。这些信息对于了解系统的硬件配置、性能特征和安全性非常有用。 ## 7. lsblk – 列出块设备 lsblk 命令列出所有可用块设备的信息,包括本地磁盘、分区和逻辑卷。输出包括设备名称、标签、大小和挂载点。 ```bash 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 列出所有块设备,包括磁盘、分区和逻辑卷。提供存储设备概览。 **进一步介绍:** ```bash [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 内核用于连接内部和外部设备的网络、存储和其他硬件相关模块。 ```bash [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 <keyword>: 使用grep命令结合lsmod输出和关键字,可以过滤出包含指定关键字的模块信息。例如,lsmod | grep bluetooth将只显示与蓝牙相关的模块。 - awk 或 cut: 使用awk或cut命令结合lsmod输出的文本处理功能,可以提取出特定列或信息。例如,lsmod | awk "{print \$1}"将只打印出模块名称的列。 例子: ```bash [root@xx ~]# lsmod | grep "xfs" xfs 2048000 1 libcrc32c 16384 1 xfs ``` "xfs"的模块它依赖于"libcrc32c"模块。 ## 9. dmesg – 打印或控制内核环缓冲区 dmesg 命令从内核环形缓冲区转储信息。其中包括内核在启动和运行过程中记录的重要系统事件。 ```bash 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 ``` 搜索 “错误” 会显示加载特定固件时出现的问题。这将打印缓冲的内核日志信息,包括启动、错误、警告等系统事件。 最后修改:2024 年 01 月 15 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏