# Linux 常用命令参考

## 目录
- [系统信息查询](#系统信息查询)
- [进程管理](#进程管理)
- [网络诊断](#网络诊断)
- [磁盘和文件系统](#磁盘和文件系统)
- [性能监控](#性能监控)
- [日志查看](#日志查看)
- [软件包管理](#软件包管理)
- [服务管理](#服务管理)

## 概览
本文档提供常用 Linux 命令的参考信息，包括命令说明、安全等级、使用示例和风险提示。在执行不熟悉的命令前，请务必查阅此文档。

## 核心内容

### 系统信息查询

#### `uname` - 显示系统信息
- **说明**：显示内核、主机名、处理器架构等信息
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-a`：显示所有信息
  - `-r`：显示内核版本
  - `-s`：显示内核名称
- **示例**：
  ```bash
  uname -a  # 显示完整系统信息
  ```
- **风险提示**：无风险

#### `cat /etc/os-release` - 系统发行版信息
- **说明**：显示 Linux 发行版的详细信息
- **安全等级**：✅ 安全（只读）
- **示例**：
  ```bash
  cat /etc/os-release
  ```
- **输出示例**：
  ```
  PRETTY_NAME="Ubuntu 22.04.3 LTS"
  NAME="Ubuntu"
  VERSION_ID="22.04"
  VERSION="22.04.3 LTS (Jammy Jellyfish)"
  ```
- **风险提示**：无风险

#### `uptime` - 系统运行时间和负载
- **说明**：显示系统运行时间、登录用户数和平均负载
- **安全等级**：✅ 安全（只读）
- **示例**：
  ```bash
  uptime
  # 输出：14:23:45 up 30 days, 3:45, 2 users, load average: 0.15, 0.08, 0.05
  ```
- **负载说明**：三个数值分别为 1、5、15 分钟平均负载，单核 CPU 负载 > 1 时需关注
- **风险提示**：无风险

#### `free` - 内存使用情况
- **说明**：显示系统内存使用情况
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-h`：以人类可读格式显示（MB/GB）
  - `-m`：以 MB 为单位
  - `-g`：以 GB 为单位
- **示例**：
  ```bash
  free -h
  ```
- **关键指标**：
  - `available`：可用内存
  - `buff/cache`：缓存和缓冲区（可被应用使用）
- **风险提示**：无风险

### 进程管理

#### `ps` - 查看进程
- **说明**：显示当前运行的进程信息
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `aux`：显示所有用户的进程详细信息
  - `-ef`：显示所有进程（类似 aux）
  - `--forest`：以树形结构显示进程关系
- **示例**：
  ```bash
  ps aux | grep nginx  # 查找 nginx 进程
  ps aux --sort=-%mem | head -10  # 按内存使用排序
  ps aux --sort=-%cpu | head -10  # 按 CPU 使用排序
  ```
- **风险提示**：无风险

#### `top` / `htop` - 实时进程监控
- **说明**：实时显示系统进程和资源使用情况
- **安全等级**：✅ 安全（只读）
- **退出方式**：按 `q`
- **示例**：
  ```bash
  top -bn1 | head -20  # 非交互模式，显示前 20 行
  htop  # 交互式监控（需要安装）
  ```
- **风险提示**：无风险

#### `kill` - 终止进程
- **说明**：向进程发送信号，通常用于终止进程
- **安全等级**：⚠️ 中等风险（可能影响运行中的服务）
- **常用信号**：
  - `15` (TERM)：正常终止（默认）
  - `9` (KILL)：强制终止（危险）
- **示例**：
  ```bash
  kill -15 1234  # 正常终止进程 PID 1234
  kill -9 1234   # 强制终止（最后手段）
  ```
- **风险提示**：
  - 强制终止可能导致数据丢失
  - 终止系统进程可能导致系统不稳定
  - 执行前先确认进程用途：`ps -fp 1234`

#### `systemctl` - 系统服务管理
- **说明**：管理 systemd 服务
- **安全等级**：⚠️ 中等风险（重启服务可能影响业务）
- **常用命令**：
  ```bash
  systemctl status service_name    # 查看服务状态
  systemctl start service_name     # 启动服务
  systemctl stop service_name      # 停止服务
  systemctl restart service_name   # 重启服务
  systemctl enable service_name    # 开机自启
  systemctl disable service_name   # 禁用开机自启
  ```
- **示例**：
  ```bash
  systemctl status nginx  # 查看 nginx 服务状态
  ```
- **风险提示**：
  - 停止关键服务可能导致系统故障
  - 重启服务会造成短暂服务中断
  - 执行前确认服务影响范围

### 网络诊断

#### `ping` - 测试网络连通性
- **说明**：发送 ICMP 包测试主机连通性
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-c 4`：发送 4 个包
  - `-i 1`：间隔 1 秒
- **示例**：
  ```bash
  ping -c 4 google.com  # 测试到 google.com 的连通性
  ping -c 4 8.8.8.8     # 测试到 8.8.8.8 的连通性
  ```
- **风险提示**：无风险

#### `ss` / `netstat` - 网络连接查看
- **说明**：显示网络连接、端口监听等信息
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-t`：TCP 连接
  - `-u`：UDP 连接
  - `-l`：监听端口
  - `-n`：显示数字地址（不解析域名）
  - `-p`：显示进程信息（需要 root）
- **示例**：
  ```bash
  ss -tuln  # 查看所有监听端口
  ss -tulnp  # 查看监听端口及对应进程（root）
  ```
- **风险提示**：无风险

#### `ip addr` / `ifconfig` - 网络接口配置
- **说明**：显示或配置网络接口
- **安全等级**：⚠️ 中等风险（配置命令可能影响网络）
- **只读命令**：
  ```bash
  ip addr show  # 显示网络接口（推荐）
  ifconfig      # 显示网络接口（旧工具）
  ```
- **风险提示**：
  - 修改网络配置可能导致网络中断
  - 生产环境执行前务必备份配置
  - 使用只读命令查看信息是安全的

#### `curl` / `wget` - HTTP 请求
- **说明**：发送 HTTP 请求或下载文件
- **安全等级**：⚠️ 中等风险（下载文件可能存在安全风险）
- **示例**：
  ```bash
  curl -I https://example.com  # 获取 HTTP 头
  curl https://example.com     # 获取页面内容
  wget https://example.com/file.zip  # 下载文件
  ```
- **风险提示**：
  - 下载的文件可能包含恶意代码
  - 下载前确认来源可信
  - 下载后先扫描病毒

### 磁盘和文件系统

#### `df` - 磁盘使用情况
- **说明**：显示文件系统磁盘使用情况
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-h`：人类可读格式
  - `-T`：显示文件系统类型
  - `-i`：显示 inode 使用情况
- **示例**：
  ```bash
  df -h  # 显示磁盘使用情况
  df -i  # 显示 inode 使用情况
  ```
- **风险提示**：无风险

#### `du` - 目录使用情况
- **说明**：显示目录或文件的磁盘使用量
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-h`：人类可读格式
  - `--max-depth=1`：显示一级目录
  - `-s`：只显示总计
- **示例**：
  ```bash
  du -h --max-depth=1 /var  # 查看 /var 下各目录大小
  du -sh /var/log/*         # 查看 /var/log 下各文件大小
  ```
- **风险提示**：无风险

#### `find` - 查找文件
- **说明**：在目录树中查找文件
- **安全等级**：✅ 安全（只读命令）
- **常用参数**：
  - `-name`：按文件名查找
  - `-type`：按类型查找（f=文件, d=目录）
  - `-size`：按大小查找
  - `-mtime`：按修改时间查找
  - `-exec`：对查找到的文件执行命令
- **示例**：
  ```bash
  find /var/log -name "*.log" -type f  # 查找所有 log 文件
  find / -name "config.conf" 2>/dev/null  # 全局查找文件
  find /path -type f -size +100M  # 查找大于 100MB 的文件
  find /path -mtime -7  # 查找 7 天内修改的文件
  ```
- **风险提示**：
  - `-exec` 参数可能执行破坏性命令
  - 使用 `-exec rm` 时要格外谨慎
  - 建议先使用 `-print` 查看结果

#### `ls` - 列出目录内容
- **说明**：列出目录内容
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-l`：详细信息
  - `-a`：显示隐藏文件
  - `-h`：人类可读格式
  - `-t`：按时间排序
  - `-r`：反向排序
- **示例**：
  ```bash
  ls -lah  # 详细显示所有文件
  ls -lt   # 按修改时间排序
  ```
- **风险提示**：无风险

#### `rm` - 删除文件或目录
- **说明**：删除文件或目录
- **安全等级**：🔴 高风险
- **常用参数**：
  - `-r`：递归删除目录
  - `-f`：强制删除，不提示确认
- **示例**：
  ```bash
  rm file.txt  # 删除文件
  rm -r directory/  # 删除目录（会提示）
  rm -rf directory/  # 强制递归删除（极度危险）
  ```
- **风险提示**：
  - ⚠️ `rm -rf` 是最危险的命令之一
  - ⚠️ 永远不要使用 `rm -rf /`
  - ⚠️ 删除前先确认路径和文件
  - ⚠️ 建议使用 `rm -i` 交互模式
  - ⚠️ 重要文件删除前先备份

### 性能监控

#### `iostat` - I/O 统计
- **说明**：显示系统 I/O 统计信息
- **安全等级**：✅ 安全（只读）
- **示例**：
  ```bash
  iostat -x 1 5  # 每秒更新，显示 5 次，显示详细信息
  ```
- **关键指标**：
  - `%util`：设备利用率
  - `await`：I/O 等待时间
- **风险提示**：无风险

#### `vmstat` - 虚拟内存统计
- **说明**：显示系统内存、进程、CPU、I/O 等统计信息
- **安全等级**：✅ 安全（只读）
- **示例**：
  ```bash
  vmstat 1 5  # 每秒更新，显示 5 次
  ```
- **关键指标**：
  - `r`：等待运行的进程数
  - `b`：不可中断睡眠的进程数
  - `wa`：等待 I/O 的 CPU 时间
- **风险提示**：无风险

#### `sar` - 系统活动报告
- **说明**：收集、报告和保存系统活动信息
- **安全等级**：✅ 安全（只读）
- **示例**：
  ```bash
  sar -u 1 5  # CPU 使用率，每秒更新 5 次
  sar -r 1 5  # 内存使用情况
  sar -n DEV 1 5  # 网络统计
  ```
- **风险提示**：无风险

### 日志查看

#### `journalctl` - systemd 日志
- **说明**：查看 systemd 日志
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-u service_name`：查看特定服务日志
  - `-n 50`：显示最近 50 行
  - `-f`：实时跟踪日志
  - `--since`：从某个时间开始
  - `--until`：到某个时间结束
  - `-p err`：只显示错误级别
- **示例**：
  ```bash
  journalctl -u nginx -n 50 --no-pager  # 查看 nginx 最近 50 条日志
  journalctl -f  # 实时跟踪所有日志
  journalctl --since "1 hour ago"  # 查看最近 1 小时日志
  journalctl -p err  # 只看错误日志
  ```
- **风险提示**：无风险

#### `tail` - 查看文件末尾
- **说明**：显示文件末尾内容
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  `-n 100`：显示末尾 100 行
  - `-f`：实时跟踪文件变化
- **示例**：
  ```bash
  tail -n 100 /var/log/syslog  # 查看最后 100 行
  tail -f /var/log/nginx/error.log  # 实时跟踪日志
  ```
- **风险提示**：无风险

#### `grep` - 文本搜索
- **说明**：在文件中搜索文本
- **安全等级**：✅ 安全（只读）
- **常用参数**：
  - `-i`：忽略大小写
  - `-r`：递归搜索
  - `-n`：显示行号
  - `-v`：反向匹配（不包含）
  - `-C 5`：显示匹配行前后各 5 行
- **示例**：
  ```bash
  grep "ERROR" /var/log/syslog  # 搜索包含 ERROR 的行
  grep -r "keyword" /var/log/   # 递归搜索
  grep -i "error" /var/log/syslog | tail -20  # 搜索并显示最后 20 行
  ```
- **风险提示**：无风险

### 软件包管理

#### `apt-get` / `apt` (Debian/Ubuntu)
- **说明**：APT 包管理工具
- **安全等级**：⚠️ 中等风险
- **常用命令**：
  ```bash
  apt update          # 更新包索引（安全）
  apt upgrade         # 升级软件包（中等风险）
  apt install package # 安装软件包（中等风险）
  apt remove package  # 删除软件包（中等风险）
  apt purge package   # 完全删除（中等风险）
  ```
- **安全选项**：
  ```bash
  apt-get --dry-run install package  # 模拟安装
  apt-get install --simulate package  # 模拟安装
  ```
- **风险提示**：
  - 升级可能导致服务中断
  - 安装未知包可能引入安全风险
  - 执行前先在测试环境验证

#### `yum` / `dnf` (RHEL/CentOS/Fedora)
- **说明**：RPM 包管理工具
- **安全等级**：⚠️ 中等风险
- **常用命令**：
  ```bash
  yum check-update       # 检查更新（安全）
  yum update             # 更新软件包（中等风险）
  yum install package    # 安装软件包（中等风险）
  yum remove package     # 删除软件包（中等风险）
  ```
- **风险提示**：同 apt

### 服务管理

#### `systemd` 相关命令
- **说明**：管理系统服务
- **安全等级**：⚠️ 中等风险（修改操作）
- **只读命令**：
  ```bash
  systemctl status service_name  # 查看状态（安全）
  systemctl is-enabled service_name  # 检查是否启用（安全）
  systemctl list-units --type=service  # 列出所有服务（安全）
  ```
- **风险提示**：
  - 停止关键服务会导致系统故障
  - 生产环境操作前先备份配置
  - 执行前确认服务依赖关系

## 示例

### 示例 1：系统健康检查
```bash
# 系统信息
uname -a
uptime
free -h
df -h

# 进程检查
ps aux --sort=-%mem | head -10
ps aux --sort=-%cpu | head -10

# 网络检查
ss -tuln
ping -c 4 8.8.8.8
```

### 示例 2：磁盘空间分析
```bash
# 查看磁盘使用
df -h

# 查找大目录
du -h --max-depth=1 /var | sort -hr

# 查找大文件
find /var/log -type f -size +100M -exec ls -lh {} \;
```

### 示例 3：故障诊断流程
```bash
# 1. 检查系统负载
uptime

# 2. 检查 CPU 使用
top -bn1 | head -20

# 3. 检查内存
free -h

# 4. 检查磁盘 I/O
iostat -x 1 3

# 5. 检查进程
ps aux | head -20

# 6. 检查日志
journalctl -p err -n 50
tail -n 50 /var/log/syslog
```

## 约束与注意事项

1. **永远不要在未知系统上直接执行破坏性命令**
2. **`rm -rf` 命令必须三思而后行**
3. **生产环境操作前先在测试环境验证**
4. **执行前先备份关键数据和配置**
5. **使用 `--dry-run` 或 `--help` 先了解命令行为**
6. **记录每个关键操作的命令和结果**
7. **遇到不确定的命令，先查阅 man 手册或此文档**
