534056668/dsh-systemd-restart ↗★ 0
dsh-systemd-restart
基于systemd的DSH Web安全重启插件 适合由systemd托管且配置了自动重启的DSH宿主机,提供无痛的网页端重启按钮。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:534056668/dsh-systemd-restart說明文件
閱讀完整 README ↗使用
设置 → 通用 / General → 重启 dsh web:
- 第一次点击武装按钮(
确认重启?,5 秒后自动取消),第二次点击执行; - 提示行先说清这台机器会怎么重启(例如「unit dsh-web.service 的 Restart=always:进程退出即被拉起,不需要任何权限」),以及上次重启的停机时长;
- 页面断开后在后台轮询 boot id,新进程一开始服务就自动刷新;120 秒还没起来就停下并给出日志位置。
配置
行级 config(在 profile 的 cordis.patch.yml 里用 - id: systemd-restart + config: 覆盖;
注意它是整体替换,不是逐键合并):
| 键 | 类型 | 默认 | 含义 |
|---|---|---|---|
mode | auto / kill / systemctl / off | auto | 重启方式。auto 读 unit 的 Restart= 决定 |
delayMs | number | 1500 | 回执发出后等多久再退出,给浏览器留出收到 202 的时间 |
unit | string | '' | 显式指定 systemd unit;留空则从 /proc/self/cgroup 探测 |
stateFile | string | '' | 状态文件路径;留空则用 $DSH_HOME/storages/dsh-systemd-restart/state.json |
maxRestarts | number | 3 | 窗口内允许的重启次数,超出直接拒绝 |
windowMs | number | 600000 | 上面那个窗口(毫秒) |
auto 的判定:unit 的 Restart=always → kill;否则若本机有 systemd-run 且是用户级 unit
→ systemctl(在独立 cgroup 的瞬时单元里跑 systemctl --user restart,所以不会被连坐);
两者都不成立 → off,并在按钮那一行写清原因,而不是假装能用。