pubo-node 1.0.168 → 1.0.172

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.
@@ -5,7 +5,8 @@ export declare function getProcessCommandByPid(pid: number): Promise<string>;
5
5
  export declare function isProcessDied(pid: any): Promise<boolean>;
6
6
  export declare function getProcessByPpid(pid: number): Promise<number[]>;
7
7
  export declare const getProcessTree: (pid: number, tree?: any) => Promise<any>;
8
- export declare function SIGKILL(pid: number, signal?: number): Promise<unknown>;
8
+ export declare const getProcessList: (pid: any) => Promise<number[]>;
9
+ export declare function SIGKILL(pid: number, signal?: number, times?: number): Promise<unknown>;
9
10
  export declare const heartbeat: () => void;
10
11
  export declare const getAudioCards: (filter?: string) => Promise<{
11
12
  text: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDiskUsage = exports.getAudioCards = exports.heartbeat = exports.getProcessTree = void 0;
3
+ exports.getDiskUsage = exports.getAudioCards = exports.heartbeat = exports.getProcessList = exports.getProcessTree = void 0;
4
4
  exports.getProcessName = getProcessName;
5
5
  exports.getPidByPort = getPidByPort;
6
6
  exports.getProcessCpuUseByPid = getProcessCpuUseByPid;
@@ -95,15 +95,18 @@ async function isProcessDied(pid) {
95
95
  // 获取子进程
96
96
  function getProcessByPpid(pid) {
97
97
  return new Promise((resolve) => {
98
- (0, child_process_1.exec)(`ps -o pid --no-headers --ppid ${pid}`, (err, stdout) => {
98
+ let child = (0, child_process_1.exec)(`ps -o pid --no-headers --ppid ${pid}`, (err, stdout) => {
99
99
  if (err) {
100
100
  resolve([]);
101
+ child = null;
101
102
  }
102
103
  else {
103
104
  resolve(stdout
104
105
  .split('\n')
105
106
  .filter((item) => !!item)
106
- .map((item) => parseFloat(item.trim())));
107
+ .map((item) => parseFloat(item.trim()))
108
+ .filter((item) => item !== child.pid));
109
+ child = null;
107
110
  }
108
111
  });
109
112
  });
@@ -152,23 +155,32 @@ const flatProcessTree = (tree, tmp) => {
152
155
  tree = null;
153
156
  tmp = null;
154
157
  };
158
+ // 获取所有进程PID,从叶到根
159
+ const getProcessList = async (pid) => {
160
+ let tree = await (0, exports.getProcessTree)(pid);
161
+ const tmp = [];
162
+ if (!tree.pid) {
163
+ return tmp;
164
+ }
165
+ tmp.push(tree.pid);
166
+ flatProcessTree(tree, tmp);
167
+ tmp.reverse();
168
+ tree = null;
169
+ return tmp;
170
+ };
171
+ exports.getProcessList = getProcessList;
155
172
  // 杀死进程以及子进程
156
- async function SIGKILL(pid, signal = 2) {
173
+ async function SIGKILL(pid, signal = 2, times = 1) {
157
174
  if (process.platform === 'win32') {
158
175
  return new Promise((resolve) => {
159
176
  (0, child_process_1.exec)(`taskkill /pid ${pid} /T /F`, resolve);
160
177
  });
161
178
  }
162
- let tree = await (0, exports.getProcessTree)(pid);
163
- // 获取所有进程PID,从叶到根
164
- const tmp = [tree.pid];
165
- flatProcessTree(tree, tmp);
166
- tmp.reverse();
167
- tree = null;
179
+ const tmp = await (0, exports.getProcessList)(pid);
168
180
  const res = { success: true, error: null };
169
181
  for (const item of tmp) {
170
182
  try {
171
- await _SIGKILL(item, signal);
183
+ await _SIGKILL(item, signal, times);
172
184
  }
173
185
  catch (err) {
174
186
  res.error = err;
package/lib/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { JsonStorage } from './storage/json';
2
2
  export { FtpClient, FtpClientPool } from './ftp-client';
3
3
  export type { FtpConnectOptions, FtpFile } from './ftp-client';
4
4
  export { createRpcClient, GrpcList } from './grpc';
5
- export { SIGKILL, isProcessDied, getProcessName, getProcessTree, getProcessByPpid, getProcessCpuUseByPid, getProcessCommandByPid, getPidByPort, heartbeat, getDiskUsage, } from './child-process';
5
+ export { SIGKILL, isProcessDied, getProcessName, getProcessTree, getProcessByPpid, getProcessCpuUseByPid, getProcessCommandByPid, getProcessList, getPidByPort, heartbeat, getDiskUsage, } from './child-process';
6
6
  export { isPortAvailable } from './utils';
7
7
  export { getWifiName, getNetworks } from './utils/network';
8
8
  export { RosTopicManager, RosTopic } from './ros/topic';
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PuboFileSystem = exports.RosTopic = exports.RosTopicManager = exports.getNetworks = exports.getWifiName = exports.isPortAvailable = exports.getDiskUsage = exports.heartbeat = exports.getPidByPort = exports.getProcessCommandByPid = exports.getProcessCpuUseByPid = exports.getProcessByPpid = exports.getProcessTree = exports.getProcessName = exports.isProcessDied = exports.SIGKILL = exports.GrpcList = exports.createRpcClient = exports.FtpClientPool = exports.FtpClient = exports.JsonStorage = void 0;
3
+ exports.PuboFileSystem = exports.RosTopic = exports.RosTopicManager = exports.getNetworks = exports.getWifiName = exports.isPortAvailable = exports.getDiskUsage = exports.heartbeat = exports.getPidByPort = exports.getProcessList = exports.getProcessCommandByPid = exports.getProcessCpuUseByPid = exports.getProcessByPpid = exports.getProcessTree = exports.getProcessName = exports.isProcessDied = exports.SIGKILL = exports.GrpcList = exports.createRpcClient = exports.FtpClientPool = exports.FtpClient = exports.JsonStorage = void 0;
4
4
  var json_1 = require("./storage/json");
5
5
  Object.defineProperty(exports, "JsonStorage", { enumerable: true, get: function () { return json_1.JsonStorage; } });
6
6
  var ftp_client_1 = require("./ftp-client");
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "getProcessTree", { enumerable: true, get: functi
17
17
  Object.defineProperty(exports, "getProcessByPpid", { enumerable: true, get: function () { return child_process_1.getProcessByPpid; } });
18
18
  Object.defineProperty(exports, "getProcessCpuUseByPid", { enumerable: true, get: function () { return child_process_1.getProcessCpuUseByPid; } });
19
19
  Object.defineProperty(exports, "getProcessCommandByPid", { enumerable: true, get: function () { return child_process_1.getProcessCommandByPid; } });
20
+ Object.defineProperty(exports, "getProcessList", { enumerable: true, get: function () { return child_process_1.getProcessList; } });
20
21
  Object.defineProperty(exports, "getPidByPort", { enumerable: true, get: function () { return child_process_1.getPidByPort; } });
21
22
  Object.defineProperty(exports, "heartbeat", { enumerable: true, get: function () { return child_process_1.heartbeat; } });
22
23
  Object.defineProperty(exports, "getDiskUsage", { enumerable: true, get: function () { return child_process_1.getDiskUsage; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pubo-node",
3
- "version": "1.0.168",
3
+ "version": "1.0.172",
4
4
  "main": "./lib/index.js",
5
5
  "types": "./lib/index.d.ts",
6
6
  "sideEffects": false,
@@ -18,10 +18,10 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@types/node": "^17.0.25",
21
- "pubo-utils": "^1.0.167",
21
+ "pubo-utils": "^1.0.172",
22
22
  "yaml": "^2.5.1"
23
23
  },
24
- "gitHead": "a096fe8903a1e2e9a146469254a0d255ff9189e3",
24
+ "gitHead": "2caf39c9d826bfd2b30665bdff5c661f2d85e10f",
25
25
  "devDependencies": {
26
26
  "del": "^5.1.0",
27
27
  "eslint": "^8.42.0",