@dsh-enhanced/dsh-rsi-cli 0.1.49 → 0.1.54
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.
- package/README.md +14 -8
- package/lib/diagnose.js +7 -7
- package/lib/diagnose.js.map +1 -1
- package/lib/home-lifecycle-lock.d.ts +4 -0
- package/lib/home-lifecycle-lock.d.ts.map +1 -0
- package/lib/home-lifecycle-lock.js +69 -0
- package/lib/home-lifecycle-lock.js.map +1 -0
- package/lib/index.d.ts +5 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +155 -8
- package/lib/index.js.map +1 -1
- package/lib/install.d.ts.map +1 -1
- package/lib/install.js +3 -0
- package/lib/install.js.map +1 -1
- package/lib/launchd-lock.d.ts +3 -0
- package/lib/launchd-lock.d.ts.map +1 -0
- package/lib/launchd-lock.js +46 -0
- package/lib/launchd-lock.js.map +1 -0
- package/lib/launchd-service.d.ts +24 -0
- package/lib/launchd-service.d.ts.map +1 -0
- package/lib/launchd-service.js +146 -0
- package/lib/launchd-service.js.map +1 -0
- package/lib/process-guard.d.ts +4 -5
- package/lib/process-guard.d.ts.map +1 -1
- package/lib/process-guard.js +17 -8
- package/lib/process-guard.js.map +1 -1
- package/lib/purge.d.ts.map +1 -1
- package/lib/purge.js +30 -5
- package/lib/purge.js.map +1 -1
- package/lib/run.d.ts +2 -1
- package/lib/run.d.ts.map +1 -1
- package/lib/run.js +8 -10
- package/lib/run.js.map +1 -1
- package/lib/services.d.ts +10 -3
- package/lib/services.d.ts.map +1 -1
- package/lib/services.js +126 -42
- package/lib/services.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/weburl.d.ts +1 -1
- package/lib/weburl.d.ts.map +1 -1
- package/lib/weburl.js +17 -2
- package/lib/weburl.js.map +1 -1
- package/package.json +1 -1
package/lib/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AAKxF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;oFACgF;IAChF,WAAW,CAAC,EAAE,OAAO,6BAA6B,CAAA;IAClD,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,CAAA;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,YAAY,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,KAChC,OAAO,CAAC,MAAM,CAAC,CAAA;CACrB;AAED,eAAO,MAAM,eAAe,EAAE,eAe7B,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,IAAI,EAAE,KAAK,GAAG,OAAO,CAAA;IACrB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAkDD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAA;AAKxF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;oFACgF;IAChF,WAAW,CAAC,EAAE,OAAO,6BAA6B,CAAA;IAClD,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,CAAA;IAChD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,YAAY,EAAE,CACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,KAChC,OAAO,CAAC,MAAM,CAAC,CAAA;CACrB;AAED,eAAO,MAAM,eAAe,EAAE,eAe7B,CAAA;AAED,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,IAAI,EAAE,KAAK,GAAG,OAAO,CAAA;IACrB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAkDD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8G5E"}
|
package/lib/install.js
CHANGED
|
@@ -196,6 +196,9 @@ export async function runInstall(options) {
|
|
|
196
196
|
if (plan.originalRuntime.version.startsWith('0.1.') && plan.candidateRuntime.version.startsWith('0.2.')) {
|
|
197
197
|
throw new PurgeError('DSH 0.1 → 0.2 跨 ABI 自动升级尚未支持;未修改原 Home 或插件。请保留原安装,在新的 DSH_HOME 中安装并验证新版,勿先替换旧 profile 的插件。');
|
|
198
198
|
}
|
|
199
|
+
if (process.platform === 'darwin' && plan.status === 'update') {
|
|
200
|
+
throw new PurgeError('macOS 尚不支持受管 Host 跨版本更新;未修改原 Home 或插件。请保留当前 Host,或在新的 DSH_HOME 中安装并验证目标版本。');
|
|
201
|
+
}
|
|
199
202
|
env = { ...env, DSH_ENHANCED_HOST_SELECTOR_VALIDATED: '1' };
|
|
200
203
|
if (plan.status === 'update') {
|
|
201
204
|
planStaging = await mkdtemp(join(tmpdir(), 'dsh-rsi-host-plan-'));
|
package/lib/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchd-lock.d.ts","sourceRoot":"","sources":["../src/launchd-lock.ts"],"names":[],"mappings":"AAMA,yFAAyF;AACzF,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA+BxG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import { constants } from 'node:fs';
|
|
3
|
+
import { lstat, open } from 'node:fs/promises';
|
|
4
|
+
import { realpathSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
/** Shared with lark-channel: one launchd label per GUI uid/profile, across all Homes. */
|
|
7
|
+
export async function withLaunchdProfileLock(profile, operation) {
|
|
8
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u.test(profile))
|
|
9
|
+
throw new Error('非法 launchd profile 名');
|
|
10
|
+
const uid = process.getuid?.();
|
|
11
|
+
if (!Number.isSafeInteger(uid) || uid === undefined || uid < 1)
|
|
12
|
+
throw new Error('无法确定非 root launchd 用户 UID');
|
|
13
|
+
const physicalTmp = realpathSync('/tmp');
|
|
14
|
+
const temporary = await lstat(physicalTmp);
|
|
15
|
+
if (!temporary.isDirectory() || temporary.isSymbolicLink() || temporary.uid !== 0
|
|
16
|
+
|| (temporary.mode & 0o7777) !== 0o1777)
|
|
17
|
+
throw new Error('launchd 锁目录 /tmp 不安全');
|
|
18
|
+
const path = join('/tmp', `.dsh-enhanced-launchd-${uid}-${profile}.lock`);
|
|
19
|
+
const descriptor = await open(path, constants.O_RDWR | constants.O_CREAT | constants.O_NOFOLLOW, 0o600);
|
|
20
|
+
try {
|
|
21
|
+
const verify = async () => {
|
|
22
|
+
const [opened, linked] = await Promise.all([descriptor.stat(), lstat(path)]);
|
|
23
|
+
if (!opened.isFile() || !linked.isFile() || opened.uid !== uid || linked.uid !== uid
|
|
24
|
+
|| opened.nlink !== 1 || linked.nlink !== 1
|
|
25
|
+
|| (opened.mode & 0o777) !== 0o600 || (linked.mode & 0o777) !== 0o600
|
|
26
|
+
|| opened.dev !== linked.dev || opened.ino !== linked.ino)
|
|
27
|
+
throw new Error(`launchd 锁文件不安全:${path}`);
|
|
28
|
+
};
|
|
29
|
+
await verify();
|
|
30
|
+
const result = spawnSync('/usr/bin/perl', ['-MFcntl=:flock', '-MErrno=EAGAIN,EWOULDBLOCK', '-e',
|
|
31
|
+
'open(F, "<&", 3) or exit 74; flock(F, LOCK_EX|LOCK_NB) or exit(($! == EAGAIN || $! == EWOULDBLOCK) ? 75 : 74);'], {
|
|
32
|
+
encoding: 'utf8', stdio: ['ignore', 'ignore', 'pipe', descriptor.fd],
|
|
33
|
+
env: { PATH: '/usr/bin:/bin', LANG: 'C' }, timeout: 10_000,
|
|
34
|
+
});
|
|
35
|
+
if (result.status === 75)
|
|
36
|
+
throw new Error(`launchd profile 正忙:${path}`);
|
|
37
|
+
if (result.status !== 0)
|
|
38
|
+
throw new Error(`无法获取 launchd 锁:${result.stderr?.trim() || result.status}`);
|
|
39
|
+
await verify();
|
|
40
|
+
return await operation();
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await descriptor.close();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=launchd-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchd-lock.js","sourceRoot":"","sources":["../src/launchd-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CommandRunner } from './run.ts';
|
|
2
|
+
export interface LaunchdState {
|
|
3
|
+
registered: boolean;
|
|
4
|
+
pid: number;
|
|
5
|
+
running: boolean;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LaunchdDefinition {
|
|
9
|
+
path: string;
|
|
10
|
+
label: string;
|
|
11
|
+
cwd: string;
|
|
12
|
+
args: string[];
|
|
13
|
+
program: string;
|
|
14
|
+
}
|
|
15
|
+
/** plutil parses the actual plist structure; a matching string elsewhere in XML is insufficient. */
|
|
16
|
+
export declare function inspectLaunchdDefinition(osHome: string, dshHome: string, profile: string, runner?: CommandRunner): Promise<{
|
|
17
|
+
definition?: LaunchdDefinition;
|
|
18
|
+
exists: boolean;
|
|
19
|
+
error?: string;
|
|
20
|
+
}>;
|
|
21
|
+
/** A failed query is absent only for launchctl's explicit service-not-found response. */
|
|
22
|
+
export declare function inspectLoadedLaunchd(definition: LaunchdDefinition, dshHome: string, runner?: CommandRunner): LaunchdState;
|
|
23
|
+
export declare function oldPidExited(pid: number, runner: CommandRunner): boolean;
|
|
24
|
+
//# sourceMappingURL=launchd-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchd-service.d.ts","sourceRoot":"","sources":["../src/launchd-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAI7C,MAAM,WAAW,YAAY;IAAG,UAAU,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;AAyDpG,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAEhH,oGAAoG;AACpG,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC7F,MAAM,GAAE,aAA6B,GAAG,OAAO,CAAC;IAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCrH;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EACjF,MAAM,GAAE,aAA6B,GAAG,YAAY,CAuBrD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAIxE"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { lstat } from 'node:fs/promises';
|
|
2
|
+
import { isAbsolute, join } from 'node:path';
|
|
3
|
+
import { defaultRunner } from "./run.js";
|
|
4
|
+
import { launchAgentTargets } from "./paths.js";
|
|
5
|
+
/** launchctl print contains nested coalitions with their own state/pid keys. */
|
|
6
|
+
function parseLoadedPrint(source, target) {
|
|
7
|
+
const lines = source.split('\n').map(line => line.trim()).filter(Boolean);
|
|
8
|
+
const wrapped = lines[0] === `${target} = {`;
|
|
9
|
+
const stack = wrapped ? ['@root'] : [];
|
|
10
|
+
const rootOffset = wrapped ? 1 : 0;
|
|
11
|
+
const top = new Map();
|
|
12
|
+
const environment = new Map();
|
|
13
|
+
const args = [];
|
|
14
|
+
let argumentsBlocks = 0;
|
|
15
|
+
let environmentBlocks = 0;
|
|
16
|
+
for (const line of wrapped ? lines.slice(1) : lines) {
|
|
17
|
+
if (line === '}') {
|
|
18
|
+
if (stack.length === 0)
|
|
19
|
+
return undefined;
|
|
20
|
+
stack.pop();
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (wrapped && stack.length === 0)
|
|
24
|
+
return undefined;
|
|
25
|
+
const scope = stack.slice(rootOffset);
|
|
26
|
+
const block = /^(.+?) (?:=|=>) \{$/u.exec(line);
|
|
27
|
+
if (block) {
|
|
28
|
+
if (scope.length === 0 && block[1] === 'arguments')
|
|
29
|
+
argumentsBlocks++;
|
|
30
|
+
if (scope.length === 0 && block[1] === 'environment')
|
|
31
|
+
environmentBlocks++;
|
|
32
|
+
stack.push(block[1]);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (scope.length === 1 && scope[0] === 'arguments') {
|
|
36
|
+
args.push(line);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// Coalition/resource blocks may contain lists and display-only values.
|
|
40
|
+
// Their fields cannot establish execution identity, so only balance their
|
|
41
|
+
// delimiters and ignore their contents.
|
|
42
|
+
if (scope.length > 0 && !(scope.length === 1 && scope[0] === 'environment'))
|
|
43
|
+
continue;
|
|
44
|
+
const field = /^(.+?) (?:=|=>) (.*)$/u.exec(line);
|
|
45
|
+
if (!field)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (scope.length === 0) {
|
|
48
|
+
if (top.has(field[1]))
|
|
49
|
+
return undefined;
|
|
50
|
+
top.set(field[1], field[2]);
|
|
51
|
+
}
|
|
52
|
+
else if (scope.length === 1 && scope[0] === 'environment') {
|
|
53
|
+
if (environment.has(field[1]))
|
|
54
|
+
return undefined;
|
|
55
|
+
environment.set(field[1], field[2]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (stack.length !== 0 || argumentsBlocks !== 1 || environmentBlocks !== 1)
|
|
59
|
+
return undefined;
|
|
60
|
+
return { top, environment, args };
|
|
61
|
+
}
|
|
62
|
+
function record(value) {
|
|
63
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
64
|
+
? value : undefined;
|
|
65
|
+
}
|
|
66
|
+
/** plutil parses the actual plist structure; a matching string elsewhere in XML is insufficient. */
|
|
67
|
+
export async function inspectLaunchdDefinition(osHome, dshHome, profile, runner = defaultRunner) {
|
|
68
|
+
const { label, plistPath } = launchAgentTargets(osHome, profile);
|
|
69
|
+
try {
|
|
70
|
+
const metadata = await lstat(plistPath);
|
|
71
|
+
if (!metadata.isFile() || metadata.isSymbolicLink())
|
|
72
|
+
return { exists: true, error: 'plist 不是普通文件' };
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error.code === 'ENOENT')
|
|
76
|
+
return { exists: false };
|
|
77
|
+
return { exists: true, error: `无法检查 plist:${String(error)}` };
|
|
78
|
+
}
|
|
79
|
+
const parsed = runner('/usr/bin/plutil', ['-convert', 'json', '-o', '-', '--', plistPath]);
|
|
80
|
+
if (parsed.status !== 0)
|
|
81
|
+
return { exists: true, error: `无法解析 plist:${parsed.stderr.trim() || parsed.status}` };
|
|
82
|
+
let value;
|
|
83
|
+
try {
|
|
84
|
+
value = record(JSON.parse(parsed.stdout));
|
|
85
|
+
}
|
|
86
|
+
catch { /* malformed output is foreign */ }
|
|
87
|
+
const environment = record(value?.EnvironmentVariables);
|
|
88
|
+
const args = value?.ProgramArguments;
|
|
89
|
+
const cwd = join(dshHome, 'profiles', profile);
|
|
90
|
+
const allowed = new Set(['Label', 'ProgramArguments', 'EnvironmentVariables', 'WorkingDirectory',
|
|
91
|
+
'StandardOutPath', 'StandardErrorPath', 'LimitLoadToSessionType', 'ProcessType', 'RunAtLoad',
|
|
92
|
+
'KeepAlive', 'ThrottleInterval', 'ExitTimeOut', 'Umask']);
|
|
93
|
+
const valid = !!value && Object.keys(value).every(key => allowed.has(key))
|
|
94
|
+
&& value.Label === label && value.WorkingDirectory === cwd
|
|
95
|
+
&& environment?.DSH_HOME === dshHome
|
|
96
|
+
&& Object.keys(environment).sort().join(',') === 'DSH_HOME,PATH'
|
|
97
|
+
&& typeof environment.PATH === 'string'
|
|
98
|
+
&& environment.PATH.split(':').every(path => isAbsolute(path))
|
|
99
|
+
&& Array.isArray(args) && args.every(arg => typeof arg === 'string')
|
|
100
|
+
&& (args.length === 5 || args.length === 6)
|
|
101
|
+
&& typeof args[0] === 'string' && isAbsolute(args[0])
|
|
102
|
+
&& (args.length === 5 || args[1] === '--disable-warning=ExperimentalWarning')
|
|
103
|
+
&& typeof args[args.length - 4] === 'string' && isAbsolute(args[args.length - 4])
|
|
104
|
+
&& args[args.length - 3] === '--profile' && args[args.length - 2] === profile
|
|
105
|
+
&& args[args.length - 1] === '--no-open'
|
|
106
|
+
&& value.StandardOutPath === join(dshHome, 'logs', `${profile}-host.log`)
|
|
107
|
+
&& value.StandardErrorPath === join(dshHome, 'logs', `${profile}-host.error.log`)
|
|
108
|
+
&& value.LimitLoadToSessionType === 'Aqua' && value.ProcessType === 'Background'
|
|
109
|
+
&& value.RunAtLoad === true && value.KeepAlive === true
|
|
110
|
+
&& value.ThrottleInterval === 10 && value.ExitTimeOut === 30 && value.Umask === 63;
|
|
111
|
+
if (!valid)
|
|
112
|
+
return { exists: true, error: 'plist 不属于指定 DSH home/profile 或执行参数不符' };
|
|
113
|
+
return { exists: true, definition: { path: plistPath, label, cwd, args: args, program: args[0] } };
|
|
114
|
+
}
|
|
115
|
+
/** A failed query is absent only for launchctl's explicit service-not-found response. */
|
|
116
|
+
export function inspectLoadedLaunchd(definition, dshHome, runner = defaultRunner) {
|
|
117
|
+
const target = `gui/${process.getuid?.() ?? process.env.UID}/${definition.label}`;
|
|
118
|
+
const result = runner('launchctl', ['print', target]);
|
|
119
|
+
if (result.status !== 0) {
|
|
120
|
+
return result.status === 113 && /Could not find service/iu.test(result.stderr)
|
|
121
|
+
? { registered: false, pid: 0, running: false }
|
|
122
|
+
: { registered: false, pid: 0, running: false,
|
|
123
|
+
error: `无法查询已加载服务:${result.stderr.trim() || `launchctl 退出码 ${result.status}`}` };
|
|
124
|
+
}
|
|
125
|
+
const parsed = parseLoadedPrint(result.stdout, target);
|
|
126
|
+
const rawPid = parsed?.top.get('pid');
|
|
127
|
+
const pid = rawPid === undefined ? 0 : Number(rawPid);
|
|
128
|
+
if (!parsed || parsed.top.get('path') !== definition.path
|
|
129
|
+
|| parsed.top.get('working directory') !== definition.cwd
|
|
130
|
+
|| parsed.environment.get('DSH_HOME') !== dshHome
|
|
131
|
+
|| parsed.top.get('program') !== definition.program
|
|
132
|
+
|| JSON.stringify(parsed.args) !== JSON.stringify(definition.args)
|
|
133
|
+
|| parsed.top.get('state') === undefined
|
|
134
|
+
|| !Number.isSafeInteger(pid) || pid < 0 || pid === 1
|
|
135
|
+
|| /^\s*(?:NODE_OPTIONS|NODE_PATH|DYLD_[A-Z_]+|LD_PRELOAD|LD_LIBRARY_PATH) =>/mu.test(result.stdout)) {
|
|
136
|
+
return { registered: true, pid: 0, running: false, error: '已加载服务与指定 DSH home/profile 的 plist 不一致' };
|
|
137
|
+
}
|
|
138
|
+
return { registered: true, pid, running: parsed.top.get('state') === 'running' && pid > 1 };
|
|
139
|
+
}
|
|
140
|
+
export function oldPidExited(pid, runner) {
|
|
141
|
+
if (pid < 2)
|
|
142
|
+
return true;
|
|
143
|
+
const result = runner('ps', ['-p', String(pid), '-o', 'pid=']);
|
|
144
|
+
return result.status === 1 && result.stdout.trim() === '' && result.stderr.trim() === '';
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=launchd-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchd-service.js","sourceRoot":"","sources":["../src/launchd-service.ts"],"names":[],"mappings":"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"}
|
package/lib/process-guard.d.ts
CHANGED
|
@@ -6,13 +6,12 @@ import type { CommandRunner } from './run.ts';
|
|
|
6
6
|
* 连「本应受管、本可自动停掉」的 host 也不放过,导致用户卡在 purge 入口。
|
|
7
7
|
* 这里把进程分成三类:
|
|
8
8
|
* - self :dsh-rsi / purge.sh 自身命令行,永远跳过。
|
|
9
|
-
* - proven
|
|
10
|
-
*
|
|
9
|
+
* - proven :Linux 下非 self,且 /proc 环境变量或既有命令行规则认定归属目标 Home。
|
|
10
|
+
* macOS 没有可信的 Home 进程身份读取,全部未知目标均归为 foreign。
|
|
11
11
|
* - foreign :命令行带 `--profile <p>` 但证据指向别的 home / 无法证明归属;fail-closed,
|
|
12
12
|
* 绝不自动杀。
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* 确认 PID 仍是目标进程(防 PID reuse)。
|
|
14
|
+
* Linux 的既有终止顺序:先 SIGTERM,轮询最多 5 秒;仍在则 SIGKILL。
|
|
16
15
|
*/
|
|
17
16
|
export interface GuardedProcess {
|
|
18
17
|
pid: number;
|
|
@@ -31,7 +30,7 @@ export interface ProcessScan {
|
|
|
31
30
|
* 扫描目标 profile 的运行中进程,分类为 proven / foreign。
|
|
32
31
|
* 已停掉的受管服务不会再出现(调用方先 stopManagedService);这里只处理残留进程。
|
|
33
32
|
*/
|
|
34
|
-
export declare function scanRunningProfiles(dshHome: string, profiles: readonly string[], runner?: CommandRunner): Promise<ProcessScan>;
|
|
33
|
+
export declare function scanRunningProfiles(dshHome: string, profiles: readonly string[], runner?: CommandRunner, platform?: NodeJS.Platform): Promise<ProcessScan>;
|
|
35
34
|
export interface TerminationReport {
|
|
36
35
|
terminated: number;
|
|
37
36
|
/** 仍在运行或身份已变的 PID(复检失败)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-guard.d.ts","sourceRoot":"","sources":["../src/process-guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7C
|
|
1
|
+
{"version":3,"file":"process-guard.d.ts","sourceRoot":"","sources":["../src/process-guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7C;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;IACnB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mDAAmD;IACnD,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAgCD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,GAAE,aAA6B,EACrC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,WAAW,CAAC,CA2CtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,GAAE,aAA6B,EACrC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,iBAAiB,CAAC,CAoD5B;AAED,8CAA8C;AAC9C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG9D"}
|
package/lib/process-guard.js
CHANGED
|
@@ -10,7 +10,7 @@ function isSelfCommand(commandLine) {
|
|
|
10
10
|
function escapeRegex(value) {
|
|
11
11
|
return value.replaceAll(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/** Linux 既有终止路径读取 PID 的命令行;扫描路径另行检查 ps 退出状态。 */
|
|
14
14
|
function readCommandLine(pid, runner) {
|
|
15
15
|
const shown = runner('ps', ['-p', String(pid), '-o', 'command=']);
|
|
16
16
|
return shown.stdout.trim() || `PID ${pid}`;
|
|
@@ -33,31 +33,40 @@ async function procDshHome(pid) {
|
|
|
33
33
|
* 扫描目标 profile 的运行中进程,分类为 proven / foreign。
|
|
34
34
|
* 已停掉的受管服务不会再出现(调用方先 stopManagedService);这里只处理残留进程。
|
|
35
35
|
*/
|
|
36
|
-
export async function scanRunningProfiles(dshHome, profiles, runner = defaultRunner) {
|
|
36
|
+
export async function scanRunningProfiles(dshHome, profiles, runner = defaultRunner, platform = process.platform) {
|
|
37
37
|
const processes = [];
|
|
38
38
|
for (const profile of profiles) {
|
|
39
39
|
const pattern = `[-]-profile ${escapeRegex(profile)}`;
|
|
40
40
|
const result = runner('pgrep', ['-f', pattern]);
|
|
41
|
-
if (result.status !== 0 && result.status
|
|
41
|
+
if (result.status !== 0 && !(result.status === 1 && result.stdout.trim() === '' && result.stderr.trim() === '')) {
|
|
42
42
|
return { processes, error: result.stderr.trim() || `pgrep 退出码 ${result.status}` };
|
|
43
43
|
}
|
|
44
44
|
for (const line of result.stdout.split('\n')) {
|
|
45
45
|
const pid = Number(line.trim());
|
|
46
46
|
if (!Number.isInteger(pid) || pid <= 0)
|
|
47
47
|
continue;
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
48
|
+
const shown = runner('ps', ['-p', String(pid), '-o', 'command=']);
|
|
49
|
+
if (shown.status !== 0 || shown.stdout.trim() === '') {
|
|
50
|
+
return { processes, error: `无法读取 PID ${pid} 命令行:${shown.stderr.trim() || `ps 退出码 ${shown.status}`}` };
|
|
51
|
+
}
|
|
52
|
+
const commandLine = shown.stdout.trim();
|
|
53
|
+
if (platform === 'darwin' ? pid === process.pid : isSelfCommand(commandLine))
|
|
50
54
|
continue;
|
|
51
55
|
const evidence = [`命令行:${commandLine}`];
|
|
52
|
-
const envHome = await procDshHome(pid);
|
|
56
|
+
const envHome = platform === 'darwin' ? undefined : await procDshHome(pid);
|
|
53
57
|
let owner;
|
|
54
|
-
if (
|
|
58
|
+
if (platform === 'darwin') {
|
|
59
|
+
// ps 的命令行不含可信 Home 身份;同一 profile 可属于其他 DSH_HOME。
|
|
60
|
+
owner = 'foreign';
|
|
61
|
+
evidence.push('macOS 无可信 DSH_HOME 进程归属证据,拒绝自动终止');
|
|
62
|
+
}
|
|
63
|
+
else if (envHome !== undefined) {
|
|
55
64
|
// 有 DSH_HOME 环境变量:直接比较,最强证据。
|
|
56
65
|
evidence.push(`DSH_HOME=${envHome}`);
|
|
57
66
|
owner = envHome === dshHome ? 'proven' : 'foreign';
|
|
58
67
|
}
|
|
59
68
|
else {
|
|
60
|
-
// 无
|
|
69
|
+
// Linux 无 DSH_HOME 变量:保留既有命令行启发式。
|
|
61
70
|
// 命令行带目标 --profile 且属于 dsh/dsh-rsi/dsh plugin 操作 → proven;
|
|
62
71
|
// 否则无法证明归属 → foreign(fail-closed)。
|
|
63
72
|
const looksLikeDsh = /(^|[\s/])(dsh|dsh-rsi)([\s.]|$)/u.test(commandLine)
|
package/lib/process-guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-guard.js","sourceRoot":"","sources":["../src/process-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"process-guard.js","sourceRoot":"","sources":["../src/process-guard.ts"],"names":[],"mappings":"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"}
|
package/lib/purge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../src/purge.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"purge.d.ts","sourceRoot":"","sources":["../src/purge.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAsC,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAKjF,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAExC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,4CAA4C;IAC5C,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAeD;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiB1E;AAyLD,gCAAgC;AAChC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAA"}
|
package/lib/purge.js
CHANGED
|
@@ -4,7 +4,8 @@ import { createHomeBackup, verifyBackup } from "./backup.js";
|
|
|
4
4
|
import { backupArchivePath, collectLocalCheckouts, listLifecycleResiduals, listProfiles, listProfilePlugins, profileLogPaths, HOME_LOCK_SUFFIX, TRANSACTION_SUFFIX, } from "./paths.js";
|
|
5
5
|
import { deleteCredentialLocator, scanCredentialLocators } from "./secrets.js";
|
|
6
6
|
import { findRunningProfiles, defaultRunner } from "./run.js";
|
|
7
|
-
import { stopManagedService } from "./services.js";
|
|
7
|
+
import { stopManagedService, withMacPurgeServiceLocks } from "./services.js";
|
|
8
|
+
import { withDshHomeLifecycleLock } from "./home-lifecycle-lock.js";
|
|
8
9
|
import { scanRunningProfiles, terminatePids } from "./process-guard.js";
|
|
9
10
|
export class PurgeError extends Error {
|
|
10
11
|
}
|
|
@@ -33,6 +34,23 @@ async function listDirectoryOrEmpty(path) {
|
|
|
33
34
|
* local checkout 形态:只随 profile 目录移除其中的符号链接,checkout 源码绝不动。
|
|
34
35
|
*/
|
|
35
36
|
export async function runPurge(options) {
|
|
37
|
+
const platform = options.platform ?? process.platform;
|
|
38
|
+
if (platform === 'darwin' && !options.dryRun) {
|
|
39
|
+
// Global order: Home rendezvous → stable ordered GUI labels → entire purge.
|
|
40
|
+
// Enumerating under the Home lock also fences a newly added profile.
|
|
41
|
+
return withDshHomeLifecycleLock(options.dshHome, async () => {
|
|
42
|
+
const allProfiles = await listProfiles(options.dshHome);
|
|
43
|
+
if (options.profile !== undefined && !allProfiles.includes(options.profile)) {
|
|
44
|
+
throw new PurgeError(`profile 不存在:${options.profile}(DSH home:${options.dshHome})`);
|
|
45
|
+
}
|
|
46
|
+
const targets = options.profile === undefined ? allProfiles : [options.profile];
|
|
47
|
+
const runner = options.runner ?? defaultRunner;
|
|
48
|
+
return withMacPurgeServiceLocks(options.home, options.dshHome, targets, runner, stop => runPurgeCore(options, allProfiles, stop));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return runPurgeCore(options);
|
|
52
|
+
}
|
|
53
|
+
async function runPurgeCore(options, lockedProfiles, stopUnderLock) {
|
|
36
54
|
const platform = options.platform ?? process.platform;
|
|
37
55
|
if (platform !== 'darwin' && platform !== 'linux') {
|
|
38
56
|
throw new PurgeError(`dsh-rsi purge 仅支持 macOS 与 Linux,当前平台:${platform}`);
|
|
@@ -41,7 +59,7 @@ export async function runPurge(options) {
|
|
|
41
59
|
throw new PurgeError('--remove-host 只能在全量 purge(不指定 --profile)时使用,避免影响其它 profile 的全局 host');
|
|
42
60
|
}
|
|
43
61
|
const runner = options.runner ?? defaultRunner;
|
|
44
|
-
const allProfiles = await listProfiles(options.dshHome);
|
|
62
|
+
const allProfiles = lockedProfiles ?? await listProfiles(options.dshHome);
|
|
45
63
|
const scope = options.profile === undefined ? 'full' : 'profile';
|
|
46
64
|
if (scope === 'profile' && !allProfiles.includes(options.profile)) {
|
|
47
65
|
throw new PurgeError(`profile 不存在:${options.profile}(DSH home:${options.dshHome})`);
|
|
@@ -53,7 +71,9 @@ export async function runPurge(options) {
|
|
|
53
71
|
const skippedServiceFiles = [];
|
|
54
72
|
const serviceErrors = [];
|
|
55
73
|
for (const profile of targetProfiles) {
|
|
56
|
-
const outcome =
|
|
74
|
+
const outcome = stopUnderLock === undefined
|
|
75
|
+
? await stopManagedService(platform, options.home, profile, runner, options.dryRun, options.dshHome)
|
|
76
|
+
: await stopUnderLock(profile);
|
|
57
77
|
skippedServiceFiles.push(...outcome.skipped);
|
|
58
78
|
for (const message of outcome.errors)
|
|
59
79
|
serviceErrors.push(`[${profile}] ${message}`);
|
|
@@ -63,7 +83,7 @@ export async function runPurge(options) {
|
|
|
63
83
|
// 2. 停服后复检残留进程。受管 host 此时应已消失;剩下的要么是可证明归属本 home
|
|
64
84
|
// 的临时 dsh/plugin 命令(proven,可终止),要么是无法证明归属的进程(foreign,
|
|
65
85
|
// fail-closed,绝不自动杀)。
|
|
66
|
-
const guard = await scanRunningProfiles(options.dshHome, targetProfiles, runner);
|
|
86
|
+
const guard = await scanRunningProfiles(options.dshHome, targetProfiles, runner, platform);
|
|
67
87
|
if (guard.error !== undefined) {
|
|
68
88
|
throw new PurgeError(`无法检查运行中的 profile 进程:${guard.error}`);
|
|
69
89
|
}
|
|
@@ -144,7 +164,12 @@ export async function runPurge(options) {
|
|
|
144
164
|
const parentEntries = await listDirectoryOrEmpty(dirname(options.dshHome));
|
|
145
165
|
const tmpEntries = await listDirectoryOrEmpty('/tmp').catch(() => []);
|
|
146
166
|
const residuals = await listLifecycleResiduals(options.dshHome, parentEntries, tmpEntries);
|
|
147
|
-
|
|
167
|
+
// A kernel lock must keep its rendezvous inode linked for the entire
|
|
168
|
+
// transaction. Unlinking it would let a second process lock a new inode.
|
|
169
|
+
const retained = platform === 'darwin'
|
|
170
|
+
? residuals.filter(path => !path.startsWith('/tmp/.dsh-enhanced-lifecycle-'))
|
|
171
|
+
: residuals;
|
|
172
|
+
const targets = [options.dshHome, ...retained];
|
|
148
173
|
report.removedPaths.push(...targets);
|
|
149
174
|
if (!options.dryRun) {
|
|
150
175
|
for (const target of targets)
|
package/lib/purge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../src/purge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAsB,MAAM,UAAU,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../src/purge.ts"],"names":[],"mappings":"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"}
|
package/lib/run.d.ts
CHANGED
|
@@ -14,7 +14,8 @@ export interface RunningProcess {
|
|
|
14
14
|
* 进程静止检查:查找仍在运行的受管 profile host。
|
|
15
15
|
*
|
|
16
16
|
* 先用 `pgrep -f <pattern>`(只取 PID),pattern 为 `--profile <profile>`;
|
|
17
|
-
* 命令行再用 `ps -p <pid> -o command=` 读取(procps/BSD
|
|
17
|
+
* 命令行再用 `ps -p <pid> -o command=` 读取(procps/BSD 均支持);
|
|
18
|
+
* ps 无法读取匹配 PID 时按探测失败处理,不将其当作静止。
|
|
18
19
|
* 因为部分环境 pgrep -l 会打印线程 comm(如 MainThread)而非完整命令行。
|
|
19
20
|
* dsh-rsi purge 自身命令行也可能带该参数,因此把命令行中含 dsh-rsi / dsh-rsi-cli
|
|
20
21
|
* (旧包名 @dsh-enhanced/rsi-cli 的全局路径同样包含 rsi-cli)的匹配剔除。
|
package/lib/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,CAAA;AAEvF,6CAA6C;AAC7C,eAAO,MAAM,aAAa,EAAE,aAO3B,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;CACpB;AAMD
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,aAAa,CAAA;AAEvF,6CAA6C;AAC7C,eAAO,MAAM,aAAa,EAAE,aAO3B,CAAA;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,WAAW,EAAE,MAAM,CAAA;CACpB;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,GAAE,aAA6B,GACpC;IAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuB9C"}
|