在 Linux 服务器中查看服务器配置的全面指南
了解和管理 Linux 服务器的硬件与软件配置对于系统管理员、开发人员以及技术爱好者来说至关重要。这不仅有助于优化系统性能,还能在故障排除和资源规划时提供必要的信息。本文将详细介绍在 Linux 服务器中查看各类配置的方法,包括但不限于 CPU、内存、存储、网络、操作系统、外围设备等。我们将涵盖各种命令行工具、配置文件以及高级工具的使用,帮助您全面掌握服务器配置的检查与管理。
目录
- 前言
- 查看操作系统信息
- 查看 CPU 信息
- 查看内存信息
- 查看存储信息
- 查看网络配置
- 查看操作系统和内核版本
- 查看外围设备信息
- 查看 BIOS 和硬件详情
- 查看已安装的软件和包
- 查看运行中的进程和服务
- 使用综合工具查看系统信息
- 脚本化和自动化系统信息收集
- 常见问题与解决方法
- 总结
前言
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 发行版存储发行版信息的文件位置可能有所不同。
常用方法:
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
查看
/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
查看特定发行版文件
一些发行版有特定的文件,如
/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位
- i686 或 i386:32位
- armv7l、aarch64: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:网络接口名称(如
eth0
、lo
) - 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
使用 netstat
和 ss
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:启动命令
使用 top
和 htop
top
是一个实时显示系统进程的工具,默认已安装在大多数 Linux 发行版中。
启动 top
:
top
top
界面说明:
- 第一部分:系统摘要,包括当前时间、运行时间、用户数、负载平均值
- 第二部分:任务信息,包括总进程数、运行中、睡眠中、停止中、僵尸进程数
- 第三部分:CPU 使用情况
- 第四部分:内存和交换空间使用情况
- 进程列表:各个进程的详细信息
htop
是 top
的增强版,提供更友好的用户界面和更多功能。
安装 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"
使用方法:
将脚本保存为
collect_system_info.sh
赋予执行权限:
chmod +x collect_system_info.sh
执行脚本:
./collect_system_info.sh
输出:
脚本将在 /var/log/system_info/
目录下生成多个带有时间戳的报告文件,包含详细的系统配置信息。
注意事项:
- 确保脚本具有必要的权限,如读取
/proc
文件、执行lshw
等 - 定期清理或备份报告文件,避免日志目录占用过多空间
常见问题与解决方法
问题 1:某些命令未安装或不可用
解决方法:
安装必要的包:使用包管理器安装缺失的命令,如
lshw
、inxi
、smartctl
等。sudo apt install lshw inxi smartmontools
检查路径:确保命令位于系统的 PATH 中。
which lshw
问题 2:权限不足导致命令无法执行
解决方法:
使用
sudo
:许多命令需要超级用户权限才能访问硬件信息。sudo lshw sudo dmidecode
调整权限:不推荐,除非明确了解风险。
问题 3:获取的信息不准确或不完整
解决方法:
更新系统:确保系统和工具是最新版本。
sudo apt update && sudo apt upgrade
检查硬件支持:某些虚拟化环境或硬件可能不支持完整的信息获取。
使用其他工具:尝试使用不同的工具获取更多信息,如结合
lshw
和inxi
。
问题 4:脚本化信息收集失败
解决方法:
检查脚本权限:确保脚本有执行权限,并使用
sudo
运行需要超级用户权限的命令。调试脚本:逐步执行脚本中的命令,确保每一步都能正确执行。
日志记录:在脚本中添加日志输出,便于排查问题。
# 在脚本开头添加 set -e set -x
问题 5:硬盘健康状态异常
解决方法:
备份数据:立即备份重要数据,防止数据丢失。
更换硬盘:根据 SMART 报告,更换有问题的硬盘。
运行磁盘修复工具:使用
fsck
等工具检查和修复文件系统错误。sudo fsck /dev/sda1
监控硬盘健康:定期使用
smartctl
监控硬盘状态。
总结
本文全面介绍了在 Linux 服务器中查看服务器配置的方法,涵盖了操作系统信息、CPU、内存、存储、网络、外围设备、BIOS、已安装的软件和运行中的进程等多个方面。通过掌握这些命令和工具,您可以有效地监控和管理服务器,优化系统性能,及时发现和解决潜在问题。
关键要点:
- 使用适当的工具:根据需要选择合适的命令和工具,如
lscpu
、lsblk
、ip
、lshw
等。 - 理解输出信息:了解各个字段的含义,有助于快速识别系统状态。
- 定期收集和监控:通过脚本化和自动化手段,定期收集系统信息,进行长期监控和分析。
- 权限管理:部分命令需要超级用户权限,确保在安全的前提下使用
sudo
。 - 数据备份与安全:在进行系统配置和维护时,务必备份重要数据,确保数据安全。
通过系统化的学习和实践,您将能够熟练地掌握 Linux 服务器配置查看与管理,提升系统运维效率和稳定性。