pubo-node 1.0.167 → 1.0.170
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/lib/child-process/index.d.ts +2 -1
- package/lib/child-process/index.js +23 -11
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -1
- package/lib/ros/topic.js +0 -3
- package/lib/storage/json.js +3 -2
- package/package.json +2 -2
|
@@ -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
|
|
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
|
-
|
|
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/lib/ros/topic.js
CHANGED
package/lib/storage/json.js
CHANGED
|
@@ -86,8 +86,9 @@ class Manager {
|
|
|
86
86
|
}
|
|
87
87
|
catch (err) {
|
|
88
88
|
const str = process.platform === 'win32' ? '\\' : '/';
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
const folder = this.path.split(str).slice(0, -1).join(str);
|
|
90
|
+
if (folder) {
|
|
91
|
+
(0, fs_1.mkdirSync)(folder, { recursive: true });
|
|
91
92
|
}
|
|
92
93
|
this.setState(this.defaultState ?? {});
|
|
93
94
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pubo-node",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.170",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"pubo-utils": "^1.0.167",
|
|
22
22
|
"yaml": "^2.5.1"
|
|
23
23
|
},
|
|
24
|
-
"gitHead": "
|
|
24
|
+
"gitHead": "1ae3c87527a1c1bb702470c1615a4ac2926dd9ee",
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"del": "^5.1.0",
|
|
27
27
|
"eslint": "^8.42.0",
|