@okclaw-build/cli 1.0.0-beta.28 → 1.0.0-beta.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,15 @@ async function runSimpleOp(op, step, humanVerb, action) {
25
25
  // Node 的 child.on('close') 因此永远不触发。用 `( nohup ... & )` 子 shell 双 fork:
26
26
  // 内层子 shell 背景化 supervisor 后立即退出,supervisor 被 init 收养,外层 bash
27
27
  // 没有子进程可等,直接 exit。
28
- const START_GATEWAY = "mkdir -p /root/.openclaw && ( nohup openclaw gateway </dev/null >/root/.openclaw/gateway.out 2>&1 & ) && sleep 3 && pgrep -f 'openclaw-gateway' >/dev/null";
28
+ const START_GATEWAY = "mkdir -p /root/.openclaw && ( nohup openclaw gateway </dev/null >/root/.openclaw/gateway.out 2>&1 & ) && sleep 3 && ps -C openclaw-gateway -o pid= >/dev/null";
29
+ // `pkill -f openclaw-gateway` 会按 cmdline substring 命中,误杀任何 cmdline 含此
30
+ // 字符串的进程(实测:bootstrap script 里跑 restart 时,其 bash -c 命令行也含
31
+ // 'openclaw-gateway',被自杀,导致 restart 命令 exit null/1)。
32
+ // `pkill -x openclaw-gateway` 用 comm 字段精确匹配,但 Linux comm 只 15 字符,
33
+ // 而 'openclaw-gateway' 16 字符,直接报错。
34
+ // 唯一稳的办法:`ps -C openclaw-gateway`(by command name,支持超 15 字符) →
35
+ // xargs kill,只杀真的 gateway 进程,不命中 cmdline substring。
36
+ const STOP_GATEWAY = "ps -C openclaw-gateway -o pid= 2>/dev/null | xargs -r kill 2>/dev/null || true";
29
37
  export async function startCommand() {
30
38
  await runSimpleOp('start', 'start', 'Starting', async () => {
31
39
  await shell(START_GATEWAY);
@@ -33,12 +41,12 @@ export async function startCommand() {
33
41
  }
34
42
  export async function stopCommand() {
35
43
  await runSimpleOp('stop', 'stop', 'Stopping', async () => {
36
- await shell("pkill -f 'openclaw-gateway' 2>/dev/null || true");
44
+ await shell(STOP_GATEWAY);
37
45
  });
38
46
  }
39
47
  export async function restartCommand() {
40
48
  await runSimpleOp('restart', 'restart', 'Restarting', async () => {
41
- await shell(`pkill -f 'openclaw-gateway' 2>/dev/null || true; sleep 1; ${START_GATEWAY}`);
49
+ await shell(`${STOP_GATEWAY}; sleep 1; ${START_GATEWAY}`);
42
50
  });
43
51
  }
44
52
  export async function statusCommand() {
@@ -47,12 +55,15 @@ export async function statusCommand() {
47
55
  emitter.start('querying gateway status');
48
56
  emitter.stepStart('status', 'checking openclaw gateway process');
49
57
  try {
50
- const result = await shellCapture("pgrep -af 'openclaw-gateway' 2>&1 || true");
58
+ // ps -C(by command name): 支持超 15 字符 comm,且不会误命中 cmdline 含
59
+ // 'openclaw-gateway' 字符串的其它进程(对照 STOP_GATEWAY 的注释)
60
+ const result = await shellCapture("ps -C openclaw-gateway -o pid,etime,cmd 2>&1 || true");
51
61
  const output = result.stdout || result.stderr || 'No gateway process found';
52
62
  if (!isNdjson()) {
53
63
  console.log(output);
54
64
  }
55
- const running = /openclaw-gateway/i.test(output);
65
+ // ps -C 没命中时输出只有 header,没有 PID 行;命中时 stdout 含 'openclaw-gateway'
66
+ const running = /openclaw-gateway/.test(result.stdout);
56
67
  emitter.stepDone('status', 'status query done');
57
68
  emitter.end(running, running ? 0 : 1, running ? undefined : 'E_STATUS_NOT_RUNNING', { running, rawOutput: output });
58
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/commands/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okclaw-build/cli",
3
- "version": "1.0.0-beta.28",
3
+ "version": "1.0.0-beta.29",
4
4
  "description": "OKClaw deployment CLI - install and manage OpenClaw, OpenViking, and channel plugins",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",