SuperAPI AI 工具集

systemd-services

部署与运维

查看项目

更新于 10-28 04:52

技能介绍

用途

systemd-services 技能用于在运行 systemd 的 Linux 系统上创建、管理、监视 systemd 服务与定时器。资料说明其覆盖单元文件编写、依赖管理、socket 激活、资源限制、journalctl 日志分析与生产环境加固。

主要能力

  • 编写完整服务单元文件示例,包括 [Unit]、[Service]、[Install] 各段配置:Description、Documentation、After、Wants、Requires、StartLimitIntervalSec、StartLimitBurst、Type、User、Group、WorkingDirectory、EnvironmentFile、Environment、ExecStartPre/ExecStart/ExecStartPost/ExecReload/ExecStop、Restart、RestartSec、各项 Timeout、WatchdogSec、安全加固项(NoNewPrivileges、ProtectSystem、ProtectHome、PrivateTmp、ReadWritePaths、CapabilityBoundingSet、AmbientCapabilities)与日志输出设置。
  • 提供常用服务管理命令:daemon-reload、start/stop/restart/reload、enable/disable(含 --now)、status、is-active/is-enabled/is-failed、列出运行中或失败的服务、show 查看属性、mask/unmask、reset-failed。
  • 定时器(替代 cron):给出 backup.timer 与 backup.service 示例,含 OnCalendar、Persistent、RandomizedDelaySec、Unit 关联;列出常见 OnCalendar 表达式,提供 systemd-analyze calendar 校验、list-timers 查看、启用定时器及手动触发关联服务用于测试的命令。
  • socket 激活:给出 .socket 与 .service 配套示例(ListenStream、Accept、Requires、启用 socket 后首次连接启动服务)、status 与 list-sockets 命令。
  • 依赖管理:说明 After、Requires、Wants、PartOf、Conflicts 语义,提供 list-dependencies(含 --reverse)与 systemd-analyze critical-chain 查看依赖树和启动顺序。
  • 资源限制(cgroups v2):通过 drop-in 覆盖文件配置 MemoryMax、MemoryHigh、CPUQuota、CPUWeight、IOWeight、IOReadBandwidthMax、IOWriteBandwidthMax、LimitNOFILE、LimitNPROC、TasksMax、OOMPolicy;提供创建 drop-in、daemon-reload、restart 的步骤,以及 systemctl status 与 systemd-cgtop 查看资源占用、systemctl edit 交互式编辑覆盖。
  • journalctl 日志分析:按服务跟踪、按启动周期、按时间范围、按优先级(-p err)、显示末尾若干行、JSON 输出,以及查看 journal 磁盘占用、rotate 与按时间/大小 vacuum。
  • 故障排查表:列服务启动失败、反复重启、status 217(用户/组不存在)、挂载命名空间失败、定时器不触发、启动早于依赖、OOM 被杀、无法绑定 80 端口等症状、诊断命令与常见修复。

使用方式

需在运行 systemd 的 Linux 系统上操作,创建系统级单元文件需要 root 或 sudo 权限,并需有要作为服务运行的应用二进制或脚本,且了解应用的启动/停止生命周期。基本流程为:编写单元文件 → systemctl daemon-reload → enable/start → 用 status 与 journalctl 验证。

适用场景

将应用部署为受管后台服务;用 systemd 定时器替代 cron 以获得更好的日志与依赖控制;为按需启动配置 socket 激活;为服务设置 CPU、内存、I/O 限制;调试服务启动失败与运行时崩溃;管理服务依赖与顺序。

限制

资料明确说明:示例需要项目自身的二进制、账户和目录,并非可直接放置使用的单元文件;Type=notify 与 WatchdogSec 需要应用支持通知与看门狗,否则应选用兼容的服务类型并省略看门狗;socket 激活需要应用消费 systemd 提供的 socket。实施前应使用 systemd-analyze verify 校验单元、检查主机 systemd 版本,并在授权变更前审视 restart/mask/journal-vacuum 的影响范围;日志与环境属性可能包含机密。基础设施命令可能中断服务,应在变更前确认目标主机与范围,并准备备份或快照。该技能为仅文档导入,未附带上游脚本与模板。