# 系统管理

systemd 不仅仅提供系统初始化，还用 systemctl(1) 命令提供通用的系统管理操作

| 操作                                   | 命令片段                                       |
|--------------------------------------|--------------------------------------------|
| 列出所有 target 单元配置                     | "systemctl list-units --type=target"       |
| 列出所有 service 单元配置                    | "systemctl list-units --type=service"      |
| 列出所有单元配置类型                           | "systemctl list-units --type=help"         |
| 列出内存中所有 socket 单元                    | "systemctl list-sockets"                   |
| 列出内存中所有 timer 单元                     | "systemctl list-timers"                    |
| 启动 "$unit"                           | "systemctl start $unit"                    |
| 停止 "$unit"                           | "systemctl stop $unit"                     |
| 重新加载服务相关的配置                          | "systemctl reload $unit"                   |
| 停止和启动所有 "$unit"                      | "systemctl restart $unit"                  |
| 启动 "$unit" 并停止所有其它的                  | "systemctl isolate $unit"                  |
| 转换到 "图形" (图形界面系统)                    | "systemctl isolate graphical"              |
| 转换到 "多用户" (命令行系统)                    | "systemctl isolate multi-user"             |
| 转换到 "应急模式" (单用户命令行系统)                | "systemctl isolate rescue"                 |
| 向"$unit"发送杀死信号                       | "systemctl kill $unit"                     |
| 检查"$unit"服务是否是活动的                    | "systemctl is-active $unit"                |
| 检查"$unit"服务是否是失败的                    | "systemctl is-failed $unit"                |
| 检查"$unit|$PID|device"的状态             | "systemctl status $unit|$PID|$device"      |
| 显示"$unit|$job"的属性                    | "systemctl show $unit|$job"                |
| 重设失败的"$unit"                         | "systemctl reset-failed $unit"             |
| 列出所有单元服务的依赖性                         | "systemctl list-dependencies --all"        |
| 列出安装在系统上的单元文件                        | "systemctl list-unit-files"                |
| 启用 "$unit" (增加符号链接)                  | "systemctl enable $unit"                   |
| 禁用 "$unit" (删除符号链接)                  | "systemctl disable $unit"                  |
| 取消遮掩 "$unit" (删除到 "/dev/null" 的符号链接) | "systemctl unmask $unit"                   |
| 遮掩 "$unit" (增加到 "/dev/null" 的符号链接)   | "systemctl mask $unit"                     |
| 获取默认的 target 设置                      | "systemctl get-default"                    |
| 设置默认 target 为"graphical" (图形系统)      | "systemctl set-default graphical"          |
| 设置默认的 target 为"multi-user" (命令行系统)   | "systemctl set-default multi-user"         |
| 显示工作环境变量                             | "systemctl show-environment"               |
| 设置环境变量 "variable" 的值为 "value"        | "systemctl set-environment variable=value" |
| 取消环境变量 "variable" 的设置                | "systemctl unset-environment variable"     |
| 重新加载所有单元文件和后台守护进程（daemon）            | "systemctl daemon-reload"                  |
| 关闭系统                                 | "systemctl poweroff"                       |
| 关闭和重启系统                              | "systemctl reboot"                         |
| 挂起系统                                 | "systemctl suspend"                        |
| 休眠系统                                 | "systemctl hibernate"                      |

这里, 上面例子中的"$unit"，可以是一个单元名（后缀.service 和 .target 是可选的)，或者，在很多情况下，也可以是匹配的多个单元 (shell 式样的全局通配符"*", "?", "[]"，通过使用 fnmatch(3) ，来匹配目前在内存中的所有单元的基本名称).

上面列子的系统状态改变命令，通常是通过"sudo"来处理，用以获得需要的系统管理权限。

"`systemctl status $unit|$PID|$device`" 的输出使用有颜色的点("●")来概述单元状态，让人看一眼就知道。

- 白色的 "●" 表示一个 "不活动"或"变为不活动中"的状态。
- 红色的 "●"表示“失败”或者“错误”状态。
- 绿色"●"表示“活动”、“重新加载中”或“激活中”状态。
