systemctl 入门
systemd 是 CentOS 7 以来所有 EL 系统(包括 AlmaLinux、Rocky Linux)默认的初始化系统和服务管理器。它取代了传统的 SysVinit,负责引导系统、管理服务、挂载文件系统等核心任务。systemctl 是与 systemd 交互的主要命令行工具。
什么是 systemd
Section titled “什么是 systemd”systemd 以 单元(Unit) 为核心概念来管理系统资源。常见的单元类型包括:
| 单元类型 | 后缀 | 说明 |
|---|---|---|
| Service | .service | 系统服务(如 Nginx、sshd) |
| Socket | .socket | 进程间通信套接字 |
| Target | .target | 一组单元的集合,类似运行级别 |
| Timer | .timer | 定时触发任务 |
| Mount | .mount | 文件系统挂载点 |
systemd 的单元配置文件通常存放在以下位置:
/usr/lib/systemd/system/— 由软件包安装的单元文件/etc/systemd/system/— 管理员自定义或覆盖的单元文件(优先级更高)
启动和停止服务
Section titled “启动和停止服务”sudo systemctl start nginxsudo systemctl stop nginx重启会先停止再启动服务,适用于配置变更后需要完全重载的场景:
sudo systemctl restart nginx重新加载配置
Section titled “重新加载配置”部分服务支持在不中断运行的情况下重新加载配置文件:
sudo systemctl reload nginx如果你不确定服务是否支持 reload,可以使用 reload-or-restart,它会优先尝试 reload,失败时回退为 restart:
sudo systemctl reload-or-restart nginx查看服务状态
Section titled “查看服务状态”status 子命令可以显示服务的运行状态、PID、内存占用以及最近的日志输出:
sudo systemctl status nginx输出示例:
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Tue 2026-03-24 10:15:30 CST; 2h ago Main PID: 1234 (nginx) Tasks: 3 (limit: 23456) Memory: 5.2M CPU: 35ms CGroup: /system.slice/nginx.service ├─1234 "nginx: master process /usr/sbin/nginx" └─1235 "nginx: worker process"你也可以使用以下命令快速判断服务状态:
systemctl is-active nginxsystemctl is-enabled nginxsystemctl is-failed nginx设置开机自启
Section titled “设置开机自启”启用开机自启
Section titled “启用开机自启”sudo systemctl enable nginx这会在 /etc/systemd/system/ 下创建符号链接,让服务在系统启动时自动运行。
如果想同时启用并立即启动服务,可以加 --now 参数:
sudo systemctl enable --now nginx取消开机自启
Section titled “取消开机自启”sudo systemctl disable nginx同样支持 --now 来同时停止服务:
sudo systemctl disable --now nginx列出系统单元
Section titled “列出系统单元”列出所有正在运行的服务
Section titled “列出所有正在运行的服务”systemctl list-units --type=service列出所有已安装的服务(含未启动的)
Section titled “列出所有已安装的服务(含未启动的)”systemctl list-unit-files --type=service列出启动失败的单元
Section titled “列出启动失败的单元”systemctl --failed查看单元的依赖关系
Section titled “查看单元的依赖关系”systemctl list-dependencies nginx使用 journalctl 查看日志
Section titled “使用 journalctl 查看日志”systemd 通过 journald 收集所有服务日志。你可以用 journalctl 快速查看某个服务的日志输出:
sudo journalctl -u nginxsudo journalctl -u nginx -fsudo journalctl -u nginx -b更多 journalctl 的高级用法请参阅 Journal 日志 章节。
管理系统运行目标(Target)
Section titled “管理系统运行目标(Target)”systemd 使用 target 来代替传统的运行级别。常见目标及其对应关系:
| Target | 传统运行级别 | 说明 |
|---|---|---|
poweroff.target | 0 | 关机 |
rescue.target | 1 | 单用户/救援模式 |
multi-user.target | 3 | 多用户命令行模式 |
graphical.target | 5 | 图形界面模式 |
reboot.target | 6 | 重启 |
systemctl get-defaultsudo systemctl set-default multi-user.targetsudo systemctl isolate rescue.target常用命令速查表
Section titled “常用命令速查表”| 操作 | 命令 |
|---|---|
| 启动服务 | sudo systemctl start <服务名> |
| 停止服务 | sudo systemctl stop <服务名> |
| 重启服务 | sudo systemctl restart <服务名> |
| 查看状态 | sudo systemctl status <服务名> |
| 开机自启 | sudo systemctl enable <服务名> |
| 取消自启 | sudo systemctl disable <服务名> |
| 启用并启动 | sudo systemctl enable --now <服务名> |
| 列出所有服务 | systemctl list-units --type=service |
| 查看失败单元 | systemctl --failed |
| 查看服务日志 | sudo journalctl -u <服务名> |