Administrator
Administrator
发布于 2024-09-06 / 53 阅读
0
0

在 Linux 服务器中查看服务器配置的全面指南

在 Linux 服务器中查看服务器配置的全面指南

了解和管理 Linux 服务器的硬件与软件配置对于系统管理员、开发人员以及技术爱好者来说至关重要。这不仅有助于优化系统性能,还能在故障排除和资源规划时提供必要的信息。本文将详细介绍在 Linux 服务器中查看各类配置的方法,包括但不限于 CPU、内存、存储、网络、操作系统、外围设备等。我们将涵盖各种命令行工具、配置文件以及高级工具的使用,帮助您全面掌握服务器配置的检查与管理。

目录

  1. 前言
  2. 查看操作系统信息
  3. 查看 CPU 信息
  4. 查看内存信息
  5. 查看存储信息
  6. 查看网络配置
  7. 查看操作系统和内核版本
  8. 查看外围设备信息
  9. 查看 BIOS 和硬件详情
  10. 查看已安装的软件和包
  11. 查看运行中的进程和服务
  12. 使用综合工具查看系统信息
  13. 脚本化和自动化系统信息收集
  14. 常见问题与解决方法
  15. 总结

前言

Linux 服务器广泛应用于各种环境中,从小型企业到大型数据中心。掌握如何查看和理解服务器配置是确保系统稳定运行、优化性能以及进行故障排查的基础。本文将从多个方面详细介绍如何在 Linux 服务器中获取全面的配置信息。


查看操作系统信息

使用 uname

uname 命令用于显示系统信息,如内核名称、版本、架构等。

基本用法:

uname

常用选项:

  • -a:显示所有信息
  • -s:显示内核名称
  • -r:显示内核版本
  • -m:显示机器硬件名称

示例:

uname -a

示例输出:

Linux server01 5.15.0-1051-azure #59~20.04.1-Ubuntu SMP Wed Jul 21 10:35:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

解释:

  • Linux:内核名称
  • server01:主机名
  • 5.15.0-1051-azure:内核版本
  • #59~20.04.1-Ubuntu SMP Wed Jul 21 10:35:26 UTC 2023:编译信息
  • x86_64:机器硬件名称
  • GNU/Linux:操作系统

查看发行版信息

不同 Linux 发行版存储发行版信息的文件位置可能有所不同。

常用方法:

  1. lsb_release 命令(适用于支持 LSB 的发行版)

    lsb_release -a
    

    示例输出:

    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 20.04.6 LTS
    Release:        20.04
    Codename:       focal
    
  2. 查看 /etc/os-release 文件

    cat /etc/os-release
    

    示例输出:

    NAME="Ubuntu"
    VERSION="20.04.6 LTS (Focal Fossa)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 20.04.6 LTS"
    VERSION_ID="20.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=focal
    UBUNTU_CODENAME=focal
    
  3. 查看特定发行版文件

    一些发行版有特定的文件,如 /etc/redhat-release/etc/debian_version 等。

    cat /etc/redhat-release
    

    示例输出:

    Red Hat Enterprise Linux release 8.5 (Ootpa)
    

查看系统架构

系统架构信息可以通过 uname -m 获取。

uname -m

示例输出:

x86_64

常见架构:

  • x86_64:64位
  • i686i386:32位
  • armv7laarch64:ARM架构

查看 CPU 信息

使用 lscpu

lscpu 命令汇总并显示 CPU 架构信息。

基本用法:

lscpu

示例输出:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  2
Core(s) per socket: 4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               142
Model name:          Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
Stepping:            12
CPU MHz:             1992.000
CPU max MHz:         4600.0000
CPU min MHz:         400.0000
BogoMIPS:            3984.00
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            8192K

关键字段解释:

  • Architecture:CPU 架构
  • CPU(s):逻辑 CPU 数量
  • Thread(s) per core:每个核心的线程数
  • Core(s) per socket:每个插槽的核心数
  • Socket(s):CPU 插槽数量
  • Vendor ID:CPU 制造商
  • Model name:CPU 型号名称
  • CPU MHz:当前 CPU 主频
  • Virtualization:是否支持虚拟化技术
  • Cache:各级缓存大小

查看 /proc/cpuinfo

/proc/cpuinfo 文件包含详细的 CPU 信息。

查看内容:

cat /proc/cpuinfo

示例输出(部分):

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 142
model name  : Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
stepping    : 12
microcode   : 0x1
cpu MHz     : 1992.000
cache size  : 8192 KB
...

常用字段:

  • processor:逻辑 CPU 编号
  • vendor_id:CPU 制造商
  • model name:CPU 型号
  • cpu MHz:当前主频
  • cache size:L2/L3 缓存大小
  • flags:CPU 支持的指令集

提取特定信息:

  • CPU 核心数:

    grep -c ^processor /proc/cpuinfo
    
  • CPU 型号名称:

    grep "model name" /proc/cpuinfo | uniq
    

使用 dmidecode

dmidecode 命令从 DMI(桌面管理接口)表中提取硬件信息,包括 CPU 详细信息。

安装 dmidecode(如果未安装):

sudo apt install dmidecode   # Debian/Ubuntu
sudo yum install dmidecode   # Red Hat/CentOS
sudo dnf install dmidecode   # Fedora

查看 CPU 信息:

sudo dmidecode -t processor

示例输出:

Handle 0x0044, DMI type 4, 42 bytes
Processor Information
    Socket Designation: U3E1
    Type: Central Processor
    Family: Core i7
    Manufacturer: Intel(R) Corporation
    ID: C3 06 3B 9A FF FB EB BF
    Version: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
    Voltage: 0.9 V
    External Clock: 100 MHz
    Max Speed: 4600 MHz
    Current Speed: 1992 MHz
    Status: Populated, Enabled
    Upgrade: Socket BGA1528
    L1 Cache Handle: 0x0045
    L2 Cache Handle: 0x0046
    L3 Cache Handle: 0x0047
    Serial Number: Not Specified
    Asset Tag: Not Specified
    Part Number: Not Specified
    Core Count: 4
    Thread Count: 8
    Characteristics:
        64-bit capable

关键字段解释:

  • Manufacturer:制造商
  • Version:CPU 型号及频率
  • Max Speed:最高主频
  • Current Speed:当前主频
  • Core Count:核心数
  • Thread Count:线程数
  • Characteristics:支持的特性

查看内存信息

使用 free

free 命令用于显示系统内存和交换空间的使用情况。

基本用法:

free

常用选项:

  • -h:以人类可读的格式显示(自动选择单位)
  • -m:以兆字节(MB)为单位显示
  • -g:以吉字节(GB)为单位显示
  • -t:显示总计

示例:

free -h

示例输出:

              total        used        free      shared  buff/cache   available
Mem:           15G        7.1G        1.2G        229M        7.3G        8.1G
Swap:          4.0G        0B         4.0G

关键字段解释:

  • total:总内存或交换空间
  • used:已使用的内存或交换空间
  • free:空闲的内存或交换空间
  • shared:多个进程共享的内存量
  • buff/cache:用于缓冲区和缓存的内存量
  • available:系统可用的内存量

查看 /proc/meminfo

/proc/meminfo 文件包含详细的内存信息。

查看内容:

cat /proc/meminfo

示例输出(部分):

MemTotal:       16367420 kB
MemFree:         1234560 kB
MemAvailable:    8491232 kB
Buffers:          234560 kB
Cached:          7654320 kB
SwapCached:          0 kB
Active:          7100000 kB
Inactive:        5000000 kB
...

关键字段解释:

  • MemTotal:总内存
  • MemFree:空闲内存
  • MemAvailable:可用内存
  • Buffers:缓冲区使用的内存
  • Cached:缓存使用的内存
  • SwapTotal:总交换空间
  • SwapFree:空闲交换空间

提取特定信息:

  • 总内存:

    grep MemTotal /proc/meminfo
    
  • 空闲内存:

    grep MemFree /proc/meminfo
    

使用 vmstat

vmstat 命令报告虚拟内存统计信息。

基本用法:

vmstat

常用选项:

  • -s:以统计形式显示信息
  • -m:显示 slab 信息
  • -d:显示块设备统计信息

示例:

vmstat -s

示例输出:

16367420 K total memory
7100000 K used memory
8491232 K available memory
...

关键字段解释:

  • total memory:总内存
  • used memory:已使用内存
  • available memory:可用内存
  • swap in / swap out:交换活动

查看存储信息

使用 lsblk

lsblk 命令列出所有可用的块设备及其分区信息。

基本用法:

lsblk

常用选项:

  • -f:显示文件系统信息
  • -a:显示所有设备,包括空设备
  • -o:指定输出列,如 NAME,SIZE,TYPE,MOUNTPOINT

示例:

lsblk -f

示例输出:

NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
├─sda1 ext4         e8f3a9d3-3c1c-4b3b-9e3d-1d4c5a3c1d4c / 
├─sda2 swap         12345678-9abc-def0-1234-56789abcdef0 [SWAP]
sdb
└─sdb1 ext4         abcdef12-3456-789a-bcde-f0123456789a /data

关键字段解释:

  • NAME:设备名称
  • FSTYPE:文件系统类型
  • UUID:设备唯一标识符
  • MOUNTPOINT:挂载点

使用 df

df 命令显示文件系统的磁盘空间使用情况。

基本用法:

df

常用选项:

  • -h:以人类可读的格式显示
  • -T:显示文件系统类型
  • -a:包括所有文件系统

示例:

df -hT

示例输出:

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       15G  7.1G  8.1G  50% /
/dev/sda2      swap      4.0G    0B  4.0G   0% [SWAP]
/dev/sdb1      ext4       50G   30G   20G  60% /data

关键字段解释:

  • Filesystem:文件系统名称
  • Type:文件系统类型
  • Size:总大小
  • Used:已用空间
  • Avail:可用空间
  • Use%:使用百分比
  • Mounted on:挂载点

使用 fdisk

fdisk 命令用于磁盘分区操作,也可以查看磁盘分区信息。

查看所有磁盘及分区:

sudo fdisk -l

示例输出(部分):

Disk /dev/sda: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 260 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1           3       16065+ 83  Linux

关键字段解释:

  • Disk:磁盘设备名称及大小
  • Device:分区设备名称
  • Boot:是否为启动分区
  • Start / End:分区起始和结束位置
  • Blocks:分区大小
  • Id:分区类型代码
  • System:分区类型名称

使用 blkid

blkid 命令用于查找或打印块设备的属性。

基本用法:

sudo blkid

示例输出:

/dev/sda1: UUID="e8f3a9d3-3c1c-4b3b-9e3d-1d4c5a3c1d4c" TYPE="ext4" PARTUUID="12345678-01"
/dev/sda2: UUID="12345678-9abc-def0-1234-56789abcdef0" TYPE="swap" PARTUUID="12345678-02"
/dev/sdb1: UUID="abcdef12-3456-789a-bcde-f0123456789a" TYPE="ext4" PARTUUID="12345678-03"

关键字段解释:

  • UUID:设备唯一标识符
  • TYPE:文件系统类型
  • PARTUUID:分区的唯一标识符

使用 smartctl

smartctl 命令用于监控和控制存储设备的 SMART(自监测、分析和报告技术)信息,帮助预测硬盘故障。

安装 smartmontools(如果未安装):

sudo apt install smartmontools   # Debian/Ubuntu
sudo yum install smartmontools   # Red Hat/CentOS
sudo dnf install smartmontools   # Fedora

查看硬盘健康状况:

sudo smartctl -a /dev/sda

示例输出(部分):

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda
Device Model:     ST1000DM010-2EP1
Serial Number:    Z4Y0X4Z0
LU WWN Device Id: 5 000c50 0a1b2c3d4
Firmware Version: CC43
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
...
SMART overall-health self-assessment test result: PASSED

关键字段解释:

  • Device Model:设备型号
  • Serial Number:序列号
  • Firmware Version:固件版本
  • User Capacity:用户可用容量
  • SMART overall-health self-assessment test result:健康状态

注意事项:

  • 确保硬盘支持 SMART
  • 某些虚拟化环境可能不支持 SMART

查看网络配置

使用 ip

ip 命令是 ifconfig 的现代替代工具,用于管理和查看网络接口。

查看所有网络接口及其状态:

ip addr

示例输出:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    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 1500 qdisc mq state UP group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe12:3456/64 scope link 
       valid_lft forever preferred_lft forever

关键字段解释:

  • Interface Name:网络接口名称(如 eth0lo
  • State:接口状态(UP/DOWN)
  • inet:IPv4 地址
  • inet6:IPv6 地址
  • MTU:最大传输单元
  • qdisc:队列规则

使用 ifconfig

ifconfig 是较旧的网络配置工具,虽然已被 ip 命令取代,但在一些系统中仍然可用。

查看所有网络接口:

ifconfig -a

示例输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
    inet6 fe80::5054:ff:fe12:3456  prefixlen 64  scopeid 0x20<link>
    ether 52:54:00:12:34:56  txqueuelen 1000  (Ethernet)
    RX packets 1234567  bytes 1234567890 (1.2 GB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 7654321  bytes 9876543210 (9.8 GB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    inet6 ::1  prefixlen 128  scopeid 0x10<host>
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 1234  bytes 123456 (123.4 KB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1234  bytes 123456 (123.4 KB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

注意:

  • ifconfig 可能需要安装 net-tools 包:

    sudo apt install net-tools   # Debian/Ubuntu
    sudo yum install net-tools   # Red Hat/CentOS
    sudo dnf install net-tools   # Fedora
    

使用 netstatss

netstat 是一个用于查看网络连接、路由表、接口统计等信息的工具,但在现代系统中逐渐被 ss 替代。

查看所有网络连接:

netstat -tulnp

示例输出:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd            
tcp6       0      0 :::80                   :::*                    LISTEN      5678/nginx
udp        0      0 0.0.0.0:123             0.0.0.0:*                           910/ntpd             

ss 命令是 netstat 的替代品,功能更强大且速度更快。

查看所有监听端口:

ss -tulnp

示例输出:

Netid  State      Recv-Q Send-Q   Local Address:Port    Peer Address:Port  Process
tcp    LISTEN     0      128            0.0.0.0:22          0.0.0.0:*      users:(("sshd",pid=1234,fd=3))
tcp    LISTEN     0      100            :::80               :::*          users:(("nginx",pid=5678,fd=6))
udp    UNCONN     0      0             0.0.0.0:123         0.0.0.0:*      users:(("ntpd",pid=910,fd=4))

关键字段解释:

  • Proto / Netid:协议类型(tcp, udp)
  • State:连接状态(LISTEN, ESTABLISHED 等)
  • Local Address:Port:本地地址和端口
  • Foreign Address:Port:远程地址和端口
  • PID/Program name:关联的进程 ID 和程序名称

查看网络设备信息

使用 lspci

lspci 命令列出所有 PCI 设备,包括网络接口卡。

lspci | grep -i network

示例输出:

02:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)

使用 lsusb

lsusb 命令列出所有 USB 设备。

lsusb | grep -i network

示例输出:

Bus 001 Device 002: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter

使用 ethtool

ethtool 命令用于查询和控制网络设备的参数。

查看网卡信息:

sudo ethtool eth0

示例输出(部分):

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                           drv probe link
    Link detected: yes

关键字段解释:

  • Speed:当前速度
  • Duplex:双工模式(Full/Half)
  • Link detected:是否检测到连接
  • Supported link modes:支持的连接模式

查看操作系统和内核版本

使用 uname

前文已介绍 uname 命令,重复此部分略。

使用 lsb_release

lsb_release 提供发行版相关信息。

查看所有信息:

lsb_release -a

示例输出:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

查看 /etc/os-release

同前文内容,重复此部分略。


查看外围设备信息

使用 lspci

lspci 命令列出所有 PCI 总线设备。

基本用法:

lspci

示例输出(部分):

00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07)
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Controller (rev 10)
02:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)

过滤特定设备类型:

  • 网络设备:

    lspci | grep -i network
    
  • 图形设备:

    lspci | grep -i vga
    

安装 pciutils(如果未安装):

sudo apt install pciutils   # Debian/Ubuntu
sudo yum install pciutils   # Red Hat/CentOS
sudo dnf install pciutils   # Fedora

使用 lsusb

lsusb 命令列出所有 USB 设备。

基本用法:

lsusb

示例输出:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

过滤特定设备类型:

  • 网络设备:

    lsusb | grep -i ethernet
    
  • 存储设备:

    lsusb | grep -i mass
    

安装 usbutils(如果未安装):

sudo apt install usbutils   # Debian/Ubuntu
sudo yum install usbutils   # Red Hat/CentOS
sudo dnf install usbutils   # Fedora

使用 lshw

lshw(List Hardware)命令提供全面的硬件信息。

安装 lshw(如果未安装):

sudo apt install lshw   # Debian/Ubuntu
sudo yum install lshw   # Red Hat/CentOS(可能需要 EPEL 仓库)
sudo dnf install lshw   # Fedora

查看所有硬件信息:

sudo lshw

查看简洁信息:

sudo lshw -short

示例输出:

H/W path        Device      Class          Description
=======================================================
                             system         Virtual Machine
/0                           bus            Motherboard
/0/0                         memory         16GiB System Memory
/0/1                         processor      Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
/0/100                       bridge         Intel Corporation Cannon Lake PCH USB xHCI Controller
/0/100/14                    network        Intel Corporation Wireless 8265 / 8275 (rev 78)
/0/100/1a                    storage        Intel Corporation SATA SSD 5400 Series
...

关键字段解释:

  • H/W path:硬件路径
  • Device:设备名称
  • Class:设备类别
  • Description:设备描述

过滤特定类别:

  • 查看网络设备:

    sudo lshw -C network
    
  • 查看存储设备:

    sudo lshw -C storage
    

使用 inxi

inxi 是一个功能强大的系统信息脚本,提供简洁而全面的输出。

安装 inxi(如果未安装):

sudo apt install inxi   # Debian/Ubuntu
sudo yum install inxi   # Red Hat/CentOS(可能需要 EPEL 仓库)
sudo dnf install inxi   # Fedora

查看系统概要信息:

inxi -Fxz

示例输出:

System:    Host: server01 Kernel: 5.15.0-1051-azure x86_64 (64 bit)
           Desktop: N/A 
Machine:   Type: Virtual System manufacturer: Microsoft Corporation product: Virtual Machine v: 1.0
CPU:       Topology: 4 Core(s) / 2 Thread(s) per Core
           BogoMIPS: 3984.00
           Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2
           Speed: 1992 MHz min/max: 400/4600 MHz
Memory:    RAM: 15.0 GiB
Storage:   ID-1: /dev/sda type: disk size: 2.0 TiB
           ID-2: /dev/sdb type: disk size: 1.0 TiB
Network:   Device-1: eth0 driver: e1000e 
           Device-2: lo driver: local

关键字段解释:

  • System:主机名、内核版本、架构
  • Machine:硬件类型和制造商
  • CPU:核心数、线程数、主频
  • Memory:内存大小
  • Storage:存储设备信息
  • Network:网络设备信息

查看 BIOS 和硬件详情

使用 dmidecode

dmidecode 命令从 DMI 表中提取硬件信息,包括 BIOS 版本、制造商、序列号等。

查看 BIOS 信息:

sudo dmidecode -t bios

示例输出(部分):

Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
    Vendor: American Megatrends Inc.
    Version: P1.80
    Release Date: 07/15/2020
    Address: 0xF0000
    Runtime Size: 64 kB
    ROM Size: 8192 kB
    Characteristics:
        PCI is supported
        PNP is supported
        BIOS is upgradeable
        BIOS shadowing is allowed
        ...

查看系统信息:

sudo dmidecode -t system

示例输出(部分):

Handle 0x0001, DMI type 1, 27 bytes
System Information
    Manufacturer: Dell Inc.
    Product Name: PowerEdge R740
    Version: Not Specified
    Serial Number: ABC123XYZ
    UUID: 4C4C4544-0030-3710-8050-CAC04F4E3031
    Wake-up Type: Power Switch
    SKU Number: Not Specified
    Family: PowerEdge

关键字段解释:

  • Manufacturer:制造商
  • Product Name:产品名称
  • Version:产品版本
  • Serial Number:序列号
  • UUID:系统唯一标识符

查看内存模块信息:

sudo dmidecode -t memory

示例输出(部分):

Handle 0x002B, DMI type 17, 40 bytes
Memory Device
    Locator: DIMM_A1
    Bank Locator: BANK 0
    Type: DDR4
    Type Detail: Synchronous Unbuffered (Unregistered)
    Size: 8192 MB
    Form Factor: SODIMM
    Set: None
    Locator: DIMM_A2
    Bank Locator: BANK 0
    Type: DDR4
    Type Detail: Synchronous Unbuffered (Unregistered)
    Size: 8192 MB
    Form Factor: SODIMM
    Set: None

关键字段解释:

  • Locator:物理插槽位置
  • Type:内存类型
  • Size:内存大小
  • Form Factor:内存形态
  • Bank Locator:银行位置

查看已安装的软件和包

Debian/Ubuntu 系列

查看已安装的所有包:

dpkg -l

查看特定包的信息:

dpkg -s <package_name>

示例:

dpkg -s nginx

查看安装的软件列表并导出:

dpkg --get-selections > installed_packages.txt

Red Hat/CentOS/Fedora 系列

查看已安装的所有包:

rpm -qa

查看特定包的信息:

rpm -qi <package_name>

使用 yum(适用于 CentOS/RHEL 7 及以下):

yum list installed

使用 dnf(适用于 Fedora 和 CentOS/RHEL 8 及以上):

dnf list installed

导出已安装的软件列表:

rpm -qa > installed_packages.txt

Arch Linux

查看已安装的所有包:

pacman -Q

查看特定包的信息:

pacman -Qi <package_name>

导出已安装的软件列表:

pacman -Qqe > installed_packages.txt

关键字段解释:

  • Name:包名称
  • Version:包版本
  • Description:包描述

查看运行中的进程和服务

使用 ps

ps 命令用于查看当前运行的进程。

基本用法:

ps

常用选项:

  • -e-A:显示所有进程
  • -f:全格式显示
  • -u <user>:显示指定用户的进程
  • -aux:显示详细的所有进程信息

示例:

ps aux

示例输出(部分):

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  22560  5648 ?        Ss   07:15   0:02 /sbin/init
root         2  0.0  0.0      0     0 ?        S    07:15   0:00 [kthreadd]
...

关键字段解释:

  • USER:进程所有者
  • PID:进程 ID
  • %CPU:CPU 使用率
  • %MEM:内存使用率
  • VSZ:虚拟内存大小
  • RSS:实际内存使用
  • TTY:终端
  • STAT:进程状态
  • START:启动时间
  • TIME:累计 CPU 时间
  • COMMAND:启动命令

使用 tophtop

top 是一个实时显示系统进程的工具,默认已安装在大多数 Linux 发行版中。

启动 top

top

top 界面说明:

  • 第一部分:系统摘要,包括当前时间、运行时间、用户数、负载平均值
  • 第二部分:任务信息,包括总进程数、运行中、睡眠中、停止中、僵尸进程数
  • 第三部分:CPU 使用情况
  • 第四部分:内存和交换空间使用情况
  • 进程列表:各个进程的详细信息

htoptop 的增强版,提供更友好的用户界面和更多功能。

安装 htop

sudo apt install htop   # Debian/Ubuntu
sudo yum install htop   # Red Hat/CentOS
sudo dnf install htop   # Fedora

启动 htop

htop

htop 界面说明:

  • 彩色条形图:显示 CPU、内存和交换空间使用情况
  • 可滚动的进程列表:支持上下滚动查看
  • 交互操作:使用 F 键进行排序、杀死进程、设置优先级等

关键功能:

  • 排序:按 CPU、内存使用等排序
  • 过滤:按名称或其他条件过滤进程
  • 操作:直接对进程进行操作,如杀死、暂停等

使用 systemctl

systemctl 命令用于管理和查看系统服务(适用于使用 systemd 的系统)。

查看所有服务状态:

systemctl list-units --type=service

查看特定服务状态:

systemctl status <service_name>

示例:

systemctl status nginx

示例输出:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2023-07-26 07:15:26 UTC; 2h 34min ago
     Docs: man:nginx(8)
 Main PID: 5678 (nginx)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─5678 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─5679 nginx: worker process
           └─5680 nginx: worker process

关键字段解释:

  • Loaded:服务单元文件的加载状态
  • Active:服务的当前状态(active/running)
  • Main PID:主进程 ID
  • Tasks:任务数
  • CGroup:控制组信息

使用 service

service 命令用于管理系统服务(适用于使用 SysV init 的系统)。

查看特定服务状态:

service <service_name> status

示例:

service ssh status

示例输出:

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2023-07-26 07:15:26 UTC; 2h 34min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1234 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/ssh.service
           └─1234 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

注意:

  • 在现代 Linux 发行版中,推荐使用 systemctl 代替 service

使用综合工具查看系统信息

使用 lshw

lshw 提供详细的硬件信息。

查看所有硬件信息:

sudo lshw

查看简洁信息:

sudo lshw -short

查看特定类别信息:

sudo lshw -C network   # 查看网络设备
sudo lshw -C storage   # 查看存储设备

示例:

sudo lshw -C network

示例输出:

  *-network                 
       description: Ethernet interface
       product: Ethernet Connection (2) I219-V
       vendor: Intel Corporation
       physical id: 1f.6
       bus info: pci@0000:00:1f.6
       logical name: eth0
       version: 00
       serial: 52:54:00:12:34:56
       capacity: 1Gbit/s
       width: 32 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k firmware=0.2-4 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
       resources: irq:123 memory:fe080000-fe08ffff

关键字段解释:

  • description:设备描述
  • product:产品型号
  • vendor:制造商
  • logical name:逻辑名称
  • serial:序列号
  • capacity:设备容量
  • driver:驱动程序名称及版本
  • configuration:设备配置参数

使用 inxi

inxi 是一个功能全面的系统信息脚本,能够提供简洁且详细的系统报告。

查看所有信息:

inxi -Fxz

示例输出:

System:    Host: server01 Kernel: 5.15.0-1051-azure x86_64 (64 bit)
           Desktop: N/A 
Machine:   Type: Virtual System manufacturer: Microsoft Corporation product: Virtual Machine v: 1.0
CPU:       Topology: 4 Core(s) / 2 Thread(s) per Core
           BogoMIPS: 3984.00
           Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2
           Speed: 1992 MHz min/max: 400/4600 MHz
Memory:    RAM: 15.0 GiB
Storage:   ID-1: /dev/sda type: disk size: 2.0 TiB
           ID-2: /dev/sdb type: disk size: 1.0 TiB
Network:   Device-1: eth0 driver: e1000e 
           Device-2: lo driver: local

关键字段解释:

  • System:主机名、内核版本、架构
  • Machine:硬件类型和制造商
  • CPU:核心数、线程数、主频
  • Memory:内存大小
  • Storage:存储设备信息
  • Network:网络设备信息

高级用法:

  • 查看详细信息:

    inxi -Fxxxz
    
  • 查看图形相关信息:

    inxi -G
    
  • 查看传感器信息:

    inxi -s
    

使用 hwinfo

hwinfo 是一个全面的硬件信息工具。

安装 hwinfo(如果未安装):

sudo apt install hwinfo   # Debian/Ubuntu
sudo yum install hwinfo   # Red Hat/CentOS(可能需要 EPEL 仓库)
sudo dnf install hwinfo   # Fedora

查看所有硬件信息:

sudo hwinfo

查看特定类别信息:

sudo hwinfo --network   # 查看网络设备
sudo hwinfo --storage   # 查看存储设备

示例:

sudo hwinfo --cpu

示例输出(部分):

01: CPU
  [Created at]    Tue Apr 26 14:22:21 2023
  Unique ID:      0x4000F
  Parent ID:      0x100
  SysFS ID:       /devices/pci0000:00/0000:00:1f.6/0000:02:00.0/cpu0
  Hardware Class: cpu
  Model:          Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
  Vendor:         Intel
  Physical ID:    0
  Bus Type:       CPU
  Capabilities:   x86-64 smep bmi1 bmi2 erms invpcid mpx ...
  Configuration:  cores=4 enabledcores=4 threads=8

关键字段解释:

  • Model:CPU 型号
  • Vendor:制造商
  • cores:核心数
  • threads:线程数
  • Capabilities:支持的特性

脚本化和自动化系统信息收集

对于需要定期收集系统信息的场景,如监控、审计等,可以使用 Shell 脚本结合上述命令自动化信息收集。

示例脚本:

#!/bin/bash

# 创建报告目录
REPORT_DIR="/var/log/system_info"
mkdir -p $REPORT_DIR

# 时间戳
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# 操作系统信息
uname -a > $REPORT_DIR/os_info_$TIMESTAMP.txt
lsb_release -a >> $REPORT_DIR/os_info_$TIMESTAMP.txt
cat /etc/os-release >> $REPORT_DIR/os_info_$TIMESTAMP.txt

# CPU 信息
lscpu > $REPORT_DIR/cpu_info_$TIMESTAMP.txt
cat /proc/cpuinfo >> $REPORT_DIR/cpu_info_$TIMESTAMP.txt

# 内存信息
free -h > $REPORT_DIR/memory_info_$TIMESTAMP.txt
cat /proc/meminfo >> $REPORT_DIR/memory_info_$TIMESTAMP.txt

# 存储信息
lsblk -f > $REPORT_DIR/storage_info_$TIMESTAMP.txt
df -hT >> $REPORT_DIR/storage_info_$TIMESTAMP.txt

# 网络信息
ip addr > $REPORT_DIR/network_info_$TIMESTAMP.txt
ss -tulnp >> $REPORT_DIR/network_info_$TIMESTAMP.txt

# 硬件信息
sudo lshw -short > $REPORT_DIR/hardware_info_$TIMESTAMP.txt

# 已安装的软件包
dpkg -l > $REPORT_DIR/installed_packages_$TIMESTAMP.txt

echo "系统信息报告已生成于 $REPORT_DIR"

使用方法:

  1. 将脚本保存为 collect_system_info.sh

  2. 赋予执行权限:

    chmod +x collect_system_info.sh
    
  3. 执行脚本:

    ./collect_system_info.sh
    

输出:

脚本将在 /var/log/system_info/ 目录下生成多个带有时间戳的报告文件,包含详细的系统配置信息。

注意事项:

  • 确保脚本具有必要的权限,如读取 /proc 文件、执行 lshw
  • 定期清理或备份报告文件,避免日志目录占用过多空间

常见问题与解决方法

问题 1:某些命令未安装或不可用

解决方法:

  • 安装必要的包:使用包管理器安装缺失的命令,如 lshwinxismartctl 等。

    sudo apt install lshw inxi smartmontools
    
  • 检查路径:确保命令位于系统的 PATH 中。

    which lshw
    

问题 2:权限不足导致命令无法执行

解决方法:

  • 使用 sudo:许多命令需要超级用户权限才能访问硬件信息。

    sudo lshw
    sudo dmidecode
    
  • 调整权限:不推荐,除非明确了解风险。

问题 3:获取的信息不准确或不完整

解决方法:

  • 更新系统:确保系统和工具是最新版本。

    sudo apt update && sudo apt upgrade
    
  • 检查硬件支持:某些虚拟化环境或硬件可能不支持完整的信息获取。

  • 使用其他工具:尝试使用不同的工具获取更多信息,如结合 lshwinxi

问题 4:脚本化信息收集失败

解决方法:

  • 检查脚本权限:确保脚本有执行权限,并使用 sudo 运行需要超级用户权限的命令。

  • 调试脚本:逐步执行脚本中的命令,确保每一步都能正确执行。

  • 日志记录:在脚本中添加日志输出,便于排查问题。

    # 在脚本开头添加
    set -e
    set -x
    

问题 5:硬盘健康状态异常

解决方法:

  • 备份数据:立即备份重要数据,防止数据丢失。

  • 更换硬盘:根据 SMART 报告,更换有问题的硬盘。

  • 运行磁盘修复工具:使用 fsck 等工具检查和修复文件系统错误。

    sudo fsck /dev/sda1
    
  • 监控硬盘健康:定期使用 smartctl 监控硬盘状态。


总结

本文全面介绍了在 Linux 服务器中查看服务器配置的方法,涵盖了操作系统信息、CPU、内存、存储、网络、外围设备、BIOS、已安装的软件和运行中的进程等多个方面。通过掌握这些命令和工具,您可以有效地监控和管理服务器,优化系统性能,及时发现和解决潜在问题。

关键要点:

  • 使用适当的工具:根据需要选择合适的命令和工具,如 lscpulsblkiplshw 等。
  • 理解输出信息:了解各个字段的含义,有助于快速识别系统状态。
  • 定期收集和监控:通过脚本化和自动化手段,定期收集系统信息,进行长期监控和分析。
  • 权限管理:部分命令需要超级用户权限,确保在安全的前提下使用 sudo
  • 数据备份与安全:在进行系统配置和维护时,务必备份重要数据,确保数据安全。

通过系统化的学习和实践,您将能够熟练地掌握 Linux 服务器配置查看与管理,提升系统运维效率和稳定性。


评论