linux-systemd について
linux-systemdは、systemdベースのLinuxシステムでサービス運用を自動化する、システム管理者向けのOpenClawスキルです。ユニット管理、ログ、cgroups、ソケットアクティベーションに対応します。
主な機能
- 01サービス、ソケット、タイマーユニットの管理
- 02サービスの起動、停止、再起動
- 03journalctlによるユニットログの確認
- 04cgroupsによるリソース制限
- 05ソケットアクティベーションの設定
活用シーン
- 01OpenClawをsystemdサービスとして実行
- 02ログを追跡してサービスの問題を診断
- 03サービスへのCPU制限の適用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill linux-systemdインストール後、Claude Code で/linux-systemdを入力して読み込まれたか確認します。
詳細
linux-systemd
目的
このスキルは、Linux 上で systemd を管理するためのツールを提供します。特に、OpenClaw のサービス管理に向けて、サービスユニット、システム制御、ログ記録、cgroups やソケットアクティベーションなどの統合機能に重点を置いています。
使用する場面
デーモンの起動や停止、ログの監視、cgroups によるリソース使用量の最適化など、Linux サービスの操作を自動化する必要がある場合に使用します。システム管理用のスクリプト、コンテナーオーケストレーション、または OpenClaw を systemd サービスとして統合する場合に適用してください。BSD や独自の init を使用する環境など、systemd 以外のシステムでは使用しないでください。
主な機能
- サービス、ソケット、タイマーの systemd ユニットファイルを管理します。
/etc/systemd/system/内のファイル編集も含まれます。 systemctlコマンドを使用してサービスを制御します。ユニットの起動、停止、再起動などができます。journalctlを使用して、特定のユニットのリアルタイムまたは過去の出力ログを照会します。- cgroups を統合して、サービスの CPU やメモリの制約など、リソース制限を設定します。
- ソケットアクティベーションを有効にして、必要に応じてサービスを起動し、リソースのオーバーヘッドを削減します。
ExecStartが OpenClaw バイナリを指すユニットファイルを作成し、OpenClaw を systemd サービスとして扱います。
使用パターン
コマンドは必ず、sudo を使うか root として、昇格した権限で実行してください。スクリプトでは、Python の subprocess 呼び出しや Bash の 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"。また、シェルでの 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(ネットワークスキルに関連)。