systemctl
大约 2 分钟
systemctl
systemctl 基础命令
服务生命周期管理
- 启动/停止/重启服务
sudo systemctl start <服务名> # 启动服务
sudo systemctl stop <服务名> # 停止服务
sudo systemctl restart <服务名> # 重启服务(先停止再启动)
sudo systemctl reload <服务名> # 重新加载配置(不中断服务)[3,9](@ref)
- 查看服务状态
systemctl status <服务名> # 显示运行状态、日志片段及进程信息[3,9](@ref)
开机自启动管理
sudo systemctl enable <服务名> # 启用开机自启动(创建符号链接)[1,3](@ref)
sudo systemctl disable <服务名> # 禁用开机自启动(移除符号链接)[1,3](@ref)
systemctl is-enabled <服务名> # 检查是否已启用自启动[4,9](@ref)
批量操作与列表查询
systemctl list-units --type=service # 列出所有正在运行的服务[4,8](@ref)
systemctl list-unit-files # 显示所有服务的配置文件状态(enabled/disabled/static)[1,5](@ref)
服务状态与日志管理
服务状态类型
active (running)
:服务正在运行inactive (dead)
:服务未运行failed
:服务启动失败(需排查日志)
日志查看与调试
journalctl -u <服务名> # 查看指定服务的完整日志[3,7](@ref)
journalctl -xe # 查看最近系统日志(含错误详情)[7](@ref)
systemd-analyze blame # 分析各服务启动耗时[4,5](@ref)
配置文件与自定义服务
配置文件位置
- 系统默认配置:
/usr/lib/systemd/system/
- 用户自定义配置:
/etc/systemd/system/
(优先级更高)
创建自定义服务
# 1. 创建服务文件
sudo nano /etc/systemd/system/my_service.service
# 2. 写入配置(示例)
[Unit]
Description=My Custom Service
After=network.target
[Service]
ExecStart=/path/to/your/script.sh
Restart=on-failure
User=root
[Install]
WantedBy=multi-user.target
# 3. 重载配置并启用
sudo systemctl daemon-reload
sudo systemctl enable my_service.service
sudo systemctl start my_service.service
- 关键字段解释:
After
:指定依赖的服务(如网络就绪后启动)Restart
:定义失败时自动重启策略
修改与调试配置
systemctl cat <服务名> # 查看当前生效的配置文件[1,7](@ref)
sudo systemctl edit <服务名> # 临时覆盖配置(生成片段文件)[7](@ref)
高级操作技巧
依赖关系管理
systemctl list-dependencies <服务名> # 查看服务的依赖树[5,7](@ref)
服务屏蔽与恢复
sudo systemctl mask <服务名> # 彻底禁用服务(阻止启动)[7](@ref)
sudo systemctl unmask <服务名> # 解除屏蔽[5](@ref)
模拟操作与安全重启
sudo systemctl restart --dry-run <服务名> # 模拟重启(不实际执行)[7](@ref)
注意事项
配置生效流程
- 修改配置文件后必须执行
systemctl daemon-reload
,否则更改无效。 - 调试时优先使用
reload
而非restart
,避免服务中断。
- 修改配置文件后必须执行
服务状态与配置分离
systemctl list-unit-files
仅显示配置状态,实际运行状态需通过 status 确认