# Linux 系统信息命令

URL: https://caijiao.org/linux/commands/system-info
Source: docs/linux/commands/system-info.md
Description: Linux系统信息命令详解，包括查看CPU、内存、磁盘、进程、网络等系统资源使用情况的命令，帮助管理员监控系统状态、诊断问题和优化性能。

在Linux系统管理中，了解系统的运行状态和资源使用情况是非常重要的。Linux提供了一系列强大的命令来获取系统信息，帮助管理员监控系统状态、诊断问题和优化性能。本章节将详细介绍Linux中常用的系统信息命令。

## 系统基本信息命令

### uname 命令

`uname` 命令用于显示系统的基本信息。

```bash
# 显示内核名称
uname

# 显示所有系统信息
uname -a

# 显示内核版本
uname -r

# 显示主机名
uname -n

# 显示硬件架构
uname -m

# 显示操作系统版本
uname -v
```

### hostname 命令

`hostname` 命令用于显示或设置系统的主机名。

```bash
# 显示当前主机名
hostname

# 显示主机名的详细信息
hostnamectl

# 设置临时主机名（重启后失效）
sudo hostname new_hostname

# 永久设置主机名
sudo hostnamectl set-hostname new_hostname
```

### cat /etc/*release 命令

查看Linux发行版信息。

```bash
# 查看发行版信息
cat /etc/*release

# 或
lsb_release -a  # 如果系统已安装lsb-release包
```

## CPU信息命令

### lscpu 命令

`lscpu` 命令用于显示CPU架构信息。

```bash
# 显示CPU信息
lscpu
```

### cat /proc/cpuinfo 命令

查看CPU的详细信息。

```bash
# 查看CPU信息
cat /proc/cpuinfo

# 统计CPU核心数
grep "processor" /proc/cpuinfo | wc -l
```

## 内存信息命令

### free 命令

`free` 命令用于显示系统内存使用情况。

```bash
# 显示内存使用情况
free

# 以人类可读的格式显示
free -h

# 显示详细的内存统计信息
free -m  # 以MB为单位
free -g  # 以GB为单位

# 实时监控内存使用情况
watch -n 1 free -h
```

### cat /proc/meminfo 命令

查看内存的详细信息。

```bash
# 查看内存信息
cat /proc/meminfo
```

## 磁盘信息命令

### df 命令

`df` 命令用于显示磁盘空间使用情况。

```bash
# 显示磁盘空间使用情况
df

# 以人类可读的格式显示
df -h

# 显示所有文件系统（包括虚拟文件系统）
df -a

# 显示文件系统类型
df -T
```

### du 命令

`du` 命令用于显示目录或文件的磁盘使用情况。

```bash
# 显示当前目录的磁盘使用情况
du

# 以人类可读的格式显示
du -h

# 显示目录总大小
du -sh /path/to/directory

# 显示目录及其子目录的大小
du -h --max-depth=1 /path/to/directory
```

### fdisk 命令

`fdisk` 命令用于查看和管理磁盘分区。

```bash
# 列出所有磁盘及其分区
sudo fdisk -l

# 管理特定磁盘的分区
sudo fdisk /dev/sda
```

### lsblk 命令

`lsblk` 命令用于列出块设备信息。

```bash
# 列出块设备信息
lsblk

# 显示所有设备（包括空设备）
lsblk -a

# 显示详细信息
lsblk -l

# 显示设备大小
lsblk -h
```

## 进程信息命令

### ps 命令

`ps` 命令用于显示当前进程的状态。

```bash
# 显示当前用户的进程
ps

# 显示所有进程
ps -e
ps -ef
ps aux

# 以树状结构显示进程
ps -e --forest
ps auxf

# 显示特定用户的进程
ps -u username

# 显示特定进程
ps -p process_id
```

### top 命令

`top` 命令用于实时显示进程动态。

```bash
# 启动top

top

# 常用交互命令：
# q: 退出
# k: 终止进程
# 1: 显示所有CPU核心
# P: 按CPU使用率排序
# M: 按内存使用率排序
# T: 按运行时间排序
```

### htop 命令

`htop` 命令是 `top` 的增强版，提供了更友好的界面。

```bash
# 安装htop（如果未安装）
# Debian/Ubuntu
sudo apt install htop
# CentOS/RHEL
sudo yum install htop

# 启动htop
htop
```

## 网络信息命令

### ifconfig/ip 命令

- `ifconfig` 命令用于显示和配置网络接口（较旧的命令）
- `ip` 命令是新一代的网络配置工具，功能更强大

```bash
# 显示网络接口信息
ifconfig
# 或
ip addr

# 配置网络接口
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0
# 或
ip addr add 192.168.1.10/24 dev eth0

# 启用/禁用网络接口
# ifconfig eth0 up/down
# 或
ip link set eth0 up/down
```

### netstat 命令

`netstat` 命令用于显示网络状态信息。

```bash
# 显示网络连接
netstat -tuln

# 显示所有网络连接
netstat -a

# 显示路由表
netstat -r

# 显示网络接口统计信息
netstat -i

# 持续显示网络连接
netstat -tulnp
```

### ss 命令

`ss` 命令是 `netstat` 的现代替代品，更快速、更高效。

```bash
# 显示网络连接
ss -tuln

# 显示所有网络连接
ss -a

# 显示路由表
ss -r
```

### ping 命令

`ping` 命令用于测试网络连接。

```bash
# 测试网络连接
ping example.com

# 限制ping的次数
ping -c 4 example.com

# 快速ping（较小的间隔）
ping -i 0.5 example.com
```

### traceroute 命令

`traceroute` 命令用于跟踪数据包的路由路径。

```bash
# 跟踪路由路径
traceroute example.com

# 使用ICMP协议
traceroute -I example.com
```

## 用户信息命令

### who 命令

`who` 命令用于显示当前登录的用户。

```bash
# 显示当前登录的用户
who

# 显示更详细的信息
who -a

# 显示上次登录信息
who -b
```

### w 命令

`w` 命令用于显示当前登录的用户及其活动。

```bash
# 显示用户活动信息
w
```

### last 命令

`last` 命令用于显示用户登录历史。

```bash
# 显示登录历史
last

# 显示特定用户的登录历史
last username
```

### id 命令

`id` 命令用于显示用户和组的ID信息。

```bash
# 显示当前用户的ID信息
id

# 显示特定用户的ID信息
id username
```

## 系统负载和性能监控命令

### uptime 命令

`uptime` 命令用于显示系统运行时间和平均负载。

```bash
# 显示系统运行时间和负载
uptime
```

### vmstat 命令

`vmstat` 命令用于显示虚拟内存统计信息。

```bash
# 显示虚拟内存统计信息
vmstat

# 每秒更新一次，共更新5次
vmstat 1 5
```

### iostat 命令

`iostat` 命令用于显示CPU和磁盘I/O统计信息。

```bash
# 显示CPU和磁盘I/O统计信息
iostat

# 每秒更新一次，共更新5次
iostat 1 5

# 显示磁盘详细信息
iostat -x
```

### sar 命令

`sar` 命令用于收集、报告和保存系统活动信息。

```bash
# 安装sar（如果未安装）
# Debian/Ubuntu
sudo apt install sysstat
# CentOS/RHEL
sudo yum install sysstat

# 显示CPU使用率
sar 1 5

# 显示内存使用率
sar -r 1 5

# 显示磁盘I/O统计信息
sar -b 1 5

# 显示网络统计信息
sar -n DEV 1 5
```

## 系统日志命令

### dmesg 命令

`dmesg` 命令用于显示内核环缓冲区的内容。

```bash
# 显示内核消息
dmesg

# 显示与特定设备相关的消息
dmesg | grep -i eth

# 以人类可读的时间格式显示
dmesg -T
```

### journalctl 命令

`journalctl` 命令用于查询systemd日志。

```bash
# 查看所有日志
journalctl

# 查看最新日志
journalctl -n

# 实时查看日志
journalctl -f

# 查看特定服务的日志
journalctl -u nginx.service

# 查看启动日志
journalctl -b
```

## 高级系统信息命令

### lsmod 命令

`lsmod` 命令用于显示已加载的内核模块。

```bash
# 显示已加载的内核模块
lsmod
```

### modinfo 命令

`modinfo` 命令用于显示内核模块的详细信息。

```bash
# 显示特定模块的信息
modinfo module_name
```

### systemctl 命令

`systemctl` 命令用于管理systemd服务。

```bash
# 显示系统状态
systemctl status

# 显示所有服务状态
systemctl list-units --type=service

# 启动/停止/重启服务
systemctl start/stop/restart service_name

# 启用/禁用服务（开机自启动）
systemctl enable/disable service_name
```

## 总结

本章节介绍了Linux系统中常用的系统信息命令，包括系统基本信息、CPU信息、内存信息、磁盘信息、进程信息、网络信息、用户信息、系统负载和性能监控、系统日志以及高级系统信息等方面的命令。

这些命令是Linux系统管理员日常工作中不可或缺的工具，可以帮助管理员全面了解系统状态，及时发现和解决问题，优化系统性能。在实际工作中，这些命令通常会结合使用，以获取更全面的系统信息。
