mcpField
L
linux-systemd

linux-systemd

github.com/alphaonedev云与 DevOps58 次安装
代码仓库

关于 linux-systemd

linux-systemd 是面向 Linux 系统管理员的 OpenClaw 技能,用于自动化管理基于 systemd 的服务。它涵盖单元配置、服务控制、日志、cgroups 和套接字激活。

主要功能

  1. 01管理服务、套接字和定时器单元
  2. 02启动、停止和重启服务
  3. 03使用 journalctl 查询单元日志
  4. 04通过 cgroups 设置资源限制
  5. 05配置套接字激活

适用场景

  1. 01将 OpenClaw 作为 systemd 服务运行
  2. 02跟踪日志以诊断服务问题
  3. 03为服务设置 CPU 限额

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill linux-systemd

安装后在 Claude Code 中输入/linux-systemd确认已加载。

详细介绍

linux-systemd

用途

此技能提供用于管理 Linux 上 systemd 的工具,重点涵盖服务单元、系统控制、日志记录,以及 cgroups 和套接字激活等集成功能,专用于管理 OpenClaw 服务。

使用场景

当你需要自动执行 Linux 服务操作时,可使用此技能,例如启动或停止守护进程、监控日志,或通过 cgroups 优化资源使用。可将其用于系统管理脚本、容器编排,或将 OpenClaw 集成为 systemd 服务。请勿在 BSD 等非 systemd 系统或自定义 init 配置中使用。

核心功能

  • 管理服务、套接字和定时器的 systemd 单元文件,包括编辑 /etc/systemd/system/ 中的文件。
  • 通过 systemctl 命令控制服务,例如启动、停止和重启单元。
  • 使用 journalctl 查询特定单元的实时或历史输出日志。
  • 集成 cgroups 以限制资源,例如对服务设置 CPU/内存限制。
  • 启用套接字激活,按需启动服务,从而降低资源开销。
  • 将 OpenClaw 作为 systemd 服务运行:创建单元文件,并将 ExecStart 指向 OpenClaw 二进制文件。

使用模式

始终使用 sudo 或以 root 身份运行命令。在脚本中,使用 Python 的 subprocess 调用,或在 Bash 中使用 shell exec 来执行 systemctl/journalctl。创建单元文件时,可直接编辑文件,或使用 systemd-analyze 进行验证。将 OpenClaw 集成时,确保服务单元引用正确的二进制文件路径和环境变量。建议按以下模式组织:先检测服务状态,再执行操作,并记录输出。对于 cgroups,请在重新加载 systemd 之前,在单元文件的 [Service] 部分指定限制。

常用命令/API

使用 systemctl 管理服务,例如,使用 systemctl start <unit> 启动服务。查看日志时,运行 journalctl -u <unit> -f 以持续跟踪输出。要重启服务,可使用 systemctl restart <unit> --no-block 执行非阻塞操作。对于 cgroups,可使用 systemctl status <unit> | grep CGroup 检查,或通过单元文件设置。设置套接字激活:在单元文件中添加 Sockets=,然后使用 systemctl start <socket-unit>。Bash 代码片段:

#!/bin/bash
systemctl stop my-service
systemctl start my-service
echo "Service restarted"

在 Python 中,使用:

import subprocess
subprocess.run(['systemctl', 'status', 'my-service'])

对于 OpenClaw 服务,可创建如下单元文件:

[Unit]
Description=OpenClaw Service
[Service]
ExecStart=/usr/bin/openclaw --config /etc/openclaw/config.json

集成说明

要集成 cgroups,请在单元文件的 [Service] 部分添加 CPUQuota=50% 等配置,然后运行 systemctl daemon-reload 并重启单元。要启用套接字激活,请定义一个 .socket 单元文件(例如,ListenStream=12345),并将其关联到服务单元。将 OpenClaw 作为服务管理时,请在单元文件中设置环境变量,例如 Environment="OPENCLAW_API_KEY=$SERVICE_API_KEY",并确保通过在 shell 中使用 export 或使用 systemd 环境文件来设置 $SERVICE_API_KEY。更改后,使用 systemctl daemon-reload 重新加载 systemd。为避免冲突,请使用 systemctl list-units --type=service 检查是否已有单元。

错误处理

始终检查命令退出码;例如,在 Bash 中使用 if systemctl start <unit>; then echo "Success"; else echo "Failed: $?"; fi。在 Python 中,将 subprocess 调用封装在 try-except 块中:try: subprocess.run([...], check=True) except subprocess.CalledProcessError as e: print(f"Error: {e.returncode}")。常见错误包括 "Failed to start unit"(检查权限或依赖项)和 "Unit not found"(使用 systemctl list-units 确认单元名称)。对于 journalctl,若没有日志,可使用 journalctl -u <unit> --since "1 hour ago",并解析输出以查找错误。如果 cgroups 未生效,可使用 systemctl status <unit> 调试限制,并通过 cat /proc/cgroups 确认内核支持。

具体用法示例

示例 1:启动并监控 OpenClaw 服务。首先,在 /etc/systemd/system/openclaw.service 创建一个单元文件,内容如下:

[Unit]
Description=OpenClaw Daemon
[Service]
ExecStart=/usr/bin/openclaw

然后,运行:systemctl daemon-reload; systemctl start openclaw; journalctl -u openclaw -f,以启动服务并持续查看日志。

示例 2:在 cgroup 限制下重启服务。编辑单元文件,加入 [Service] CPUQuota=30%,然后执行:systemctl daemon-reload; systemctl restart my-service。运行 systemctl status my-service | grep CGroup 确认已应用 CPU 限制。

图关系

  • 连接到:linux 集群(例如,与文件管理或进程控制等其他 linux 技能共享依赖项)。
  • 通过标签关联:systemd(直接关联)、services(例如,关联到容器或编排技能)、linux(广泛的集群关联)、units(关联到资源管理技能)。
  • 集成点:cgroup(连接到性能监控工具)、socket activation(关联到网络技能)。

评论

支持 Markdown