3.4 KiB
Executable File
3.4 KiB
Executable File
Systemd User Service 参考
已注册的 systemd user services
| Service | 路径 | 端口 | 自启 |
|---|---|---|---|
new-api |
~/.config/systemd/user/new-api.service | 3000 | ✅ |
matrix-synapse |
~/.config/systemd/user/matrix-synapse.service | 8008 | ✅ |
opencode-web |
~/.config/systemd/user/opencode-web.service | 4096 | ✅ |
openclaw-gateway |
~/.config/systemd/user/openclaw-gateway.service | 18789 | ✅ |
tailscale |
~/.config/systemd/user/tailscale.service | - | ✅ |
通用管理命令
# 启用 + 启动
systemctl --user daemon-reload
systemctl --user enable <service>
systemctl --user start <service>
# 状态检查
systemctl --user status <service>
# 重启
systemctl --user restart <service>
# 进程挂了自动恢复
systemctl --user reset-failed <service> # 先清失败状态再 start
matrix-synapse.service(模板)
[Unit]
Description=Matrix Synapse Homeserver
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/muc
ExecStart=/home/muc/matrix-venv/bin/python -m synapse.app.homeserver --config-path /home/muc/matrix-config/homeserver.yaml
Restart=always
RestartSec=5
Environment="PYTHONPATH=/home/muc/matrix-venv/lib/python3.13/site-packages"
[Install]
WantedBy=default.target
安装方式(matrix-synapse pip 被 PEP 668 阻塞时):
uv venv /home/muc/matrix-venv
uv pip install matrix-synapse --python /home/muc/matrix-venv
opencode-web.service(模板)
[Unit]
Description=OpenCode Web UI
After=network.target
[Service]
ExecStart=/home/muc/.local/bin/opencode web --port 4096 --hostname 127.0.0.1
Restart=always
RestartSec=5
Environment=HOME=/home/muc
Environment=QWEN_API_KEY=sk-0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
Environment=PATH=/home/muc/.local/bin:/home/muc/.local/node-v22.19.0-linux-x64/bin:/usr/local/bin:/usr/bin:/bin
WorkingDirectory=/home/muc
[Install]
WantedBy=default.target
tailscale.service(模板)
[Unit]
Description=Tailscale
After=network.target
[Service]
ExecStart=/home/muc/.local/bin/tailscaled --tun=userspace-networking --state=/home/muc/.local/state/tailscaled/state
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
关键:先确保 socket 目录存在:
sudo mkdir -p /var/run/tailscale
sudo chown $USER /var/run/tailscale
Tailscale socket 路径问题(重要 gotcha)
症状:tailscale status 报错 "Failed to connect to local Tailscale daemon"但 ps aux | grep tailscaled 显示进程在跑
原因:tailscaled 默认 socket 路径是 /var/run/tailscale/tailscaled.sock,但 daemon 启动时指定了不同路径(如 /tmp/tailscaled.sock)
诊断:
ls -la /var/run/tailscale/ # socket 目录
ls -la /tmp/tailscaled.sock # 实际 socket
ps aux | grep tailscaled | grep socket # daemon 的 --socket 参数
修复:kill 旧 daemon → 确保 /var/run/tailscale/ 存在且属主正确 → 重启 service
新增 service 时的标准流程
- 写 service 文件到
~/.config/systemd/user/<name>.service systemctl --user daemon-reloadsystemctl --user enable <name>systemctl --user start <name>systemctl --user status <name>确认 active
注意:进程 crash 后 systemd 会在短时间内阻止重启,需要 systemctl --user reset-failed <name> 清除阻止状态。