systemd 服务

精选 systemd 服务 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。

#实用工具命令

#systemctl 服务控制 (systemctl)

systemctl - 系统命令 (System Commands)

管理 systemd 单元并控制系统服务(启动、停止、启用等)。

命令指令 含义说明
systemctl halt 停止所有正在运行的软件,保持硬件通电
systemctl hibernate 将系统内存内容保存到磁盘并关闭硬件电源
systemctl poweroff 停止并关闭系统电源
systemctl reboot 重启系统

systemctl - 服务命令 (Service Commands)

命令指令 含义说明
systemctl start <service> 立即启动服务
systemctl stop <service> 停止正在运行的服务
systemctl restart <service> 重启服务
systemctl reload <service> 重新加载服务配置而不重启
systemctl enable <service> 启用服务在启动时自动运行
systemctl disable <service> 禁用启动时自动运行
systemctl status <service> 显示当前状态和最近日志
systemctl mask <service> 阻止服务被启动
systemctl unmask <service> 移除屏蔽以便服务可以再次启动
systemctl list-units 列出活动单元
systemctl list-unit-files 列出所有单元文件及其启用状态

#journalctl 日志查询 (journalctl)

查询和过滤 systemd 日志中的日志。

命令指令 含义说明
journalctl 显示整个日志
journalctl -b 显示当前启动的日志
journalctl --list-boots 列出所有启动会话
journalctl -b -1 显示上一次启动的日志
journalctl -u <service> 显示特定单元/服务的日志
journalctl -n 100 显示最后 100 条日志条目
journalctl -f 跟踪新的日志条目(类似 tail -f 风格)
journalctl -p err..emerg 仅显示错误(及以上)优先级日志
journalctl --disk-usage 显示日志的磁盘使用情况
journalctl --since today 显示今天以来的日志

#busctl 总线控制 (busctl)

检查和监控 D-Bus(桌面总线)以进行调试或内省。

命令指令 含义说明
busctl list 列出总线上的所有服务/对等点
busctl status [SERVICE\|PID] 显示服务或 PID 的进程信息和凭据
busctl monitor [SERVICE...] 转储实时消息流量,按 Ctrl+C 停止
busctl capture [SERVICE...] 将总线流量捕获到 pcap 文件
busctl tree [SERVICE...] 显示服务导出的对象树

#loginctl 登录管理 (loginctl)

管理用户会话和登录相关设置。

命令指令 含义说明
loginctl list-sessions 列出所有活动会话
loginctl list-users 列出已登录用户
loginctl user-status <UID> 显示用户 <UID> 的所有会话和进程
loginctl session-status <ID> 显示会话 <ID> 的详细信息和日志
loginctl show-session <ID> 显示会话的机器可解析属性
loginctl terminate-session <ID> 结束会话 <ID> 中的所有进程
loginctl lock-session <ID> 锁定指定会话
loginctl unlock-session <ID> 解锁指定会话

#systemd-analyze 启动分析 (systemd-analyze)

分析系统启动性能和单元依赖关系。

命令指令 含义说明
systemd-analyze 显示总启动时间细分
systemd-analyze blame 按启动时间列出服务
systemd-analyze plot > boot.svg 生成启动序列的 SVG 视图

#systemd-cgtop 资源监控 (systemd-cgtop)

实时监控控制组(cgroups)的资源使用情况(CPU、内存、I/O)。

命令指令 含义说明
systemd-cgtop 监控最高控制组资源使用情况
systemd-cgtop -c 按 CPU 使用率对控制组排序
systemd-cgtop -d <delay> 更改刷新延迟间隔

#timedatectl 时间日期 (timedatectl)

管理系统日期、时间、时区和 NTP 同步。

命令指令 含义说明
timedatectl status 显示当前日期/时间设置
timedatectl list-timezones 列出所有可用时区
timedatectl set-timezone <Zone> 设置系统时区
timedatectl set-time "YYYY-MM-DD" 手动设置日期
timedatectl set-time "HH:MM:SS" 手动设置时间
timedatectl set-ntp true 启用 NTP 同步
timedatectl set-ntp false 禁用 NTP 同步

#resolvectl DNS 解析 (resolvectl)

与 systemd-resolved DNS 解析器服务交互。

命令指令 含义说明
resolvectl status 显示 DNS 配置和链接信息
resolvectl query <hostname> 通过 systemd-resolved 解析主机名
resolvectl dns <interface> <IP> 为特定接口设置 DNS 服务器
resolvectl domain <interface> <name> 为接口设置搜索域
resolvectl flush-caches 清除由 systemd-resolved 管理的 DNS 缓存
resolvectl reset-statistics 重置所有 DNS 解析统计数据

#hostnamectl 主机名 (hostnamectl)

查询和设置系统主机名(静态、临时、友好)及相关元数据。

命令列表

命令指令 含义说明
hostnamectl status 显示当前主机名和系统信息
hostnamectl hostname <NAME> 设置静态/临时/友好主机名
hostnamectl set-hostname <NAME> --static 仅设置静态主机名
hostnamectl set-hostname <NAME> --transient 仅设置临时主机名
hostnamectl set-hostname <NAME> --pretty 设置友好(用户友好的)主机名
hostnamectl set-chassis <TYPE> 设置机箱类型(例如 desktop、laptop、server)

↓ 说明 (Description)

- 静态 (Static) - 存储在 `/etc/hostname` 中的永久主机名。在启动时使用。
- 临时 (Transient) - 在运行时设置的临时主机名(通常由 DHCP 或手动设置)。重启后丢失。
- 友好 (Pretty) - 用户友好的显示名称(可以包含空格和特殊字符)。

#systemd-run 临时运行 (systemd-run)

将命令作为临时 systemd 单元(服务、作用域、定时器等)运行。

命令指令 含义说明
systemd-run <command> 将命令作为临时 .service 单元运行
systemd-run -p BlockIOWeight=10 updatedb 使用特定资源限制属性运行
systemd-run -p MemoryMax=100M script.sh 以内存使用限制运行内存密集型任务
systemd-run --on-calendar='YYYY-MM-DD HH:MM' script.sh 计划脚本在特定日期和时间运行
systemd-run -E VAR=value script.sh 使用设置的环境变量运行脚本

systemd 限制类型 (Types of systemd limits)

可以施加不同类型的限制:

- CPU 限制 (CPU Limits)
- 内存限制 (Memory Limits)
- I/O 限制 (I/O Limits)
- 任务/线程限制 (Task/Thread Limits)
- 安全/隔离 (Security/Isolation)
- 执行/环境 (Execution/Environment)

示例 (Example)

systemd-run -p MemoryMax=100M -p CPUQuota=50% scriptFile.sh