
### Linux `systemctl` 命令常用用法总结


#### **一、服务管理（核心功能）**
`systemctl` 主要用于管理系统服务（`.service` 文件），支持启动、停止、重启、查看状态、设置开机启动等操作。

##### 1. 服务状态操作
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 启动服务            | `systemctl start <服务名>`            | 启动指定服务（仅临时生效，重启后不保留）                             |
| 停止服务            | `systemctl stop <服务名>`             | 停止指定服务                                                         |
| 重启服务            | `systemctl restart <服务名>`          | 重启服务（若服务未运行则启动）                                         |
| 重新加载配置        | `systemctl reload <服务名>`           | 重新加载服务配置文件（不重启服务，适用于支持此功能的服务，如 Nginx） |
| 平滑重启（优雅重启）| `systemctl try-restart <服务名>`      | 仅在服务运行时重启，避免报错                                         |

##### 2. 服务状态查询
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 查看状态            | `systemctl status <服务名>`           | 显示服务运行状态、日志及依赖关系（按 `Q` 退出）                     |
| 简洁状态            | `systemctl is-active <服务名>`        | 仅显示服务是否激活（active/running）                                |
| 查看是否启用开机启动| `systemctl is-enabled <服务名>`       | 显示服务是否设置为开机启动（enabled/disabled）                      |
| 列出所有服务        | `systemctl list-units --type=service` | 列出所有运行中的服务                                                |
| 列出所有服务（含未激活）| `systemctl list-units --type=service --all` | 显示所有服务，包括未激活的（状态为 inactive/failed 等）          |
| 列出失败的服务      | `systemctl --failed --type=service`   | 查看启动失败的服务                                                   |

##### 3. 开机启动管理
| 操作            | 命令                              | 说明                         |
| ------------- | ------------------------------- | -------------------------- |
| 启用开机启动        | `systemctl enable <服务名>`        | 设置服务开机自动启动（永久生效，关联到默认运行目标） |
| 禁用开机启动        | `systemctl disable <服务名>`       | 取消服务开机启动                   |
| 临时启用（仅本次启动）   | `systemctl enable --now <服务名>`  | 立即启动服务并设置开机启动              |
| 临时禁用（停止并取消启动） | `systemctl disable --now <服务名>` | 立即停止服务并取消开机启动              |

##### 4. 服务依赖与依赖关系
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 查看依赖关系        | `systemctl list-dependencies <服务名>` | 显示服务的依赖项（依赖它的服务 + 它依赖的服务）                     |
| 查看直接依赖        | `systemctl list-dependencies --reverse <服务名>` | 仅显示依赖该服务的其他服务                                       |


#### **二、系统状态与控制**
##### 1. 系统基本状态
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 查看系统运行时间    | `systemctl uptime`                    | 显示系统已运行时间（类似 `uptime` 命令）                            |
| 查看启动耗时        | `systemctl time`                      | 显示系统启动总耗时及各阶段（内核、用户空间、服务）耗时              |
| 查看登录会话        | `systemctl list-sessions`             | 列出当前登录的用户会话                                               |

##### 2. 电源管理（需管理员权限）
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 关机                | `systemctl poweroff`                  | 立即关机                                                             |
| 重启                | `systemctl reboot`                    | 立即重启                                                             |
| 休眠（挂起到硬盘）  | `systemctl hibernate`                 | 系统进入休眠状态                                                     |
| 睡眠（挂起到内存）  | `systemctl suspend`                   | 系统进入睡眠状态（低功耗，断电数据丢失）                             |
| 混合休眠            | `systemctl hybrid-sleep`              | 同时休眠到内存和硬盘，结合两者优势                                 |
| 取消挂起/休眠      | `systemctl wakeup`                    | 唤醒系统（需配合定时器使用）                                         |

##### 3. 运行目标（替代传统运行级别）
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 查看当前目标        | `systemctl get-default`               | 显示默认运行目标（如 `graphical.target` 对应图形界面）              |
| 切换目标            | `systemctl isolate <目标名>`           | 切换到指定目标（如 `multi-user.target` 为无图形多用户模式）         |
| 设置默认目标        | `systemctl set-default <目标名>`       | 设置开机默认目标（需管理员权限）                                     |

**常用目标对应关系**：  
- `graphical.target`：图形界面（对应传统运行级别 5）  
- `multi-user.target`：无图形多用户模式（对应级别 3）  
- `rescue.target`：单用户救援模式（对应级别 1）  
- `emergency.target`：紧急模式（无文件系统挂载，仅基本命令）  


#### **三、定时器管理（systemd.timer）**
`systemctl` 可管理定时任务（替代传统 `cron`），需配合 `.timer` 文件使用。

| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 列出所有定时器      | `systemctl list-timers`               | 显示激活的定时器及其下一次触发时间                                   |
| 查看定时器状态      | `systemctl status <定时器名>`         | 显示定时器详细状态及日志                                             |
| 启用/禁用定时器     | `systemctl enable/disable <定时器名>`  | 控制定时器是否开机启动                                               |
| 立即触发定时器任务  | `systemctl start <定时器名>`          | 强制立即执行定时器关联的服务                                         |


#### **四、资源控制与限制（高级功能）**
可对服务设置 CPU、内存、IO 等资源限制（需在服务文件中配置，或临时生效）。

| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 设置 CPU 核心限制   | `systemctl set-property <服务名> CPUAffinity=0,1` | 限制服务仅运行在 CPU 0 和 1 核心                     |
| 设置内存上限        | `systemctl set-property <服务名> MemoryMax=1G` | 限制服务最大内存使用量为 1GB                                       |
| 恢复默认资源配置    | `systemctl unset-property <服务名> CPUAffinity MemoryMax` | 清除已设置的资源限制                                             |


#### **五、日志相关（结合 journalctl）**
| 操作                | 命令                                  | 说明                                                                 |
|---------------------|---------------------------------------|----------------------------------------------------------------------|
| 查看服务日志        | `systemctl status <服务名> -l`        | 显示服务状态并附带日志（`-l` 展开完整日志）                         |
| 实时监控日志        | `journalctl -u <服务名> -f`           | 实时追踪服务日志（需结合 `journalctl` 命令）                         |
| 查看历史日志        | `journalctl -u <服务名> --since "2025-05-01"` | 查看指定时间后的服务日志                               |


#### **六、常用选项与技巧**
- **通配符匹配**：  
  可使用通配符管理同类服务，例如：  
  ```bash
  systemctl start nginx*.service  # 启动所有以 nginx 开头的服务
  systemctl stop *.timer          # 停止所有定时器服务
  ```

- **强制操作**：  
  `--force` 用于强制停止/重启服务（可能终止进程）：  
  ```bash
  systemctl --force stop <服务名>
  ```

- **临时生效（不修改配置）**：  
  使用 `--now` 可立即执行操作并关联开机启动（或取消）：  
  ```bash
  systemctl enable --now <服务名>  # 启动并启用开机启动
  systemctl disable --now <服务名> # 停止并禁用开机启动
  ```

- **查看帮助**：  
  ```bash
  systemctl --help                 # 查看全局帮助
  systemctl help <子命令>          # 查看子命令详细用法（如 systemctl help start）
  ```


#### **七、示例场景**
1. **管理 Nginx 服务**：  
   ```bash
   systemctl start nginx       # 启动 Nginx
   systemctl enable nginx      # 设置开机启动
   systemctl status nginx      # 查看运行状态
   systemctl reload nginx      # 重新加载配置
   ```

2. **系统关机与重启**：  
   ```bash
   systemctl reboot            # 立即重启
   systemctl poweroff          # 立即关机
   systemctl suspend           # 进入睡眠
   ```

3. **设置默认运行目标**：  
   ```bash
   systemctl set-default multi-user.target  # 设为无图形多用户模式
   systemctl isolate rescue.target         # 进入单用户救援模式
   ```


### 总结
`systemctl` 是 systemd 生态的核心工具，覆盖服务管理、系统控制、定时任务、资源限制等功能。熟练掌握其常用命令可高效管理 Linux 系统服务与状态，替代传统 SysVinit 的 `service`、`chkconfig` 等工具。建议结合 `journalctl` 分析服务日志，通过服务文件（`/etc/systemd/system/`）自定义复杂配置。`systemctl` 是 Linux 系统中用于控制 `systemd` 系统和服务管理器的命令。以下是 `systemctl` 命令的一些常用用法总结：

### 1. 服务管理
#### 启动服务
```bash
systemctl start <服务名>
```
例如，启动 `httpd` 服务：
```bash
systemctl start httpd
```

#### 停止服务
```bash
systemctl stop <服务名>
```
例如，停止 `httpd` 服务：
```bash
systemctl stop httpd
```

#### 重启服务
```bash
systemctl restart <服务名>
```
例如，重启 `httpd` 服务：
```bash
systemctl restart httpd
```

#### 重新加载服务配置
```bash
systemctl reload <服务名>
```
例如，重新加载 `nginx` 服务配置：
```bash
systemctl reload nginx
```

#### 查看服务状态
```bash
systemctl status <服务名>
```
例如，查看 `httpd` 服务状态：
```bash
systemctl status httpd
```

### 2. 服务的开机自启管理
#### 设置服务开机自启
```bash
systemctl enable <服务名>
```
例如，设置 `httpd` 服务开机自启：
```bash
systemctl enable httpd
```

#### 禁止服务开机自启
```bash
systemctl disable <服务名>
```
例如，禁止 `httpd` 服务开机自启：
```bash
systemctl disable httpd
```

#### 查看服务是否开机自启
```bash
systemctl is-enabled <服务名>
```
例如，查看 `httpd` 服务是否开机自启：
```bash
systemctl is-enabled httpd
```

### 3. 系统管理
#### 重启系统
```bash
systemctl reboot
```

#### 关机
```bash
systemctl poweroff
```

#### 挂起系统
```bash
systemctl suspend
```

#### 休眠系统
```bash
systemctl hibernate
```

#### 混合休眠（挂起并休眠）
```bash
systemctl hybrid-sleep
```

### 4. 查看系统状态
#### 查看系统当前运行级别
```bash
systemctl get-default
```

#### 设置系统默认运行级别
```bash
systemctl set-default <目标运行级别>
```
例如，设置系统默认运行级别为多用户模式：
```bash
systemctl set-default multi-user.target
```

### 5. 查看服务列表
#### 查看所有已激活的服务
```bash
systemctl list-units --type=service --state=active
```

#### 查看所有服务（包括未激活的）
```bash
systemctl list-units --type=service --all
```

