idle: rewrite to use CDP to get processes instead of exec
This commit is contained in:
parent
f14929cb1c
commit
67a7fc2c03
@ -1,19 +1,8 @@
|
|||||||
import { exec } from 'child_process';
|
import { exec } from 'child_process';
|
||||||
|
|
||||||
const getProcesses = async containing => process.platform !== 'win32' ? Promise.resolve([]) : new Promise(resolve => exec(`wmic process get Commandline,ProcessID /format:csv`, (e, out) => {
|
|
||||||
resolve(out.toString().split('\r\n').slice(2).map(x => {
|
|
||||||
const parsed = x.trim().split(',').slice(1).reverse();
|
|
||||||
|
|
||||||
return [
|
|
||||||
parseInt(parsed[0]) || parsed[0], // pid to int
|
|
||||||
parsed.slice(1).join(',')
|
|
||||||
];
|
|
||||||
}).filter(x => x[1] && x[1].includes(containing)));
|
|
||||||
}));
|
|
||||||
|
|
||||||
const killProcesses = async pids => process.platform !== 'win32' ? Promise.resolve('') : new Promise(resolve => exec(`taskkill /F ${pids.map(x => `/PID ${x}`).join(' ')}`, (e, out) => resolve(out)));
|
const killProcesses = async pids => process.platform !== 'win32' ? Promise.resolve('') : new Promise(resolve => exec(`taskkill /F ${pids.map(x => `/PID ${x}`).join(' ')}`, (e, out) => resolve(out)));
|
||||||
|
|
||||||
export default async (CDP, { browserType, dataPath }) => {
|
export default async (CDP, { browserType }) => {
|
||||||
if (browserType !== 'chromium') { // current implementation is for chromium-based only
|
if (browserType !== 'chromium') { // current implementation is for chromium-based only
|
||||||
const warning = () => log(`Warning: Idle API is currently only for Chromium (running on ${browserType})`);
|
const warning = () => log(`Warning: Idle API is currently only for Chromium (running on ${browserType})`);
|
||||||
|
|
||||||
@ -26,10 +15,10 @@ export default async (CDP, { browserType, dataPath }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const killNonCrit = async () => {
|
const killNonCrit = async () => {
|
||||||
const procs = await getProcesses(dataPath);
|
const procs = (await CDP.send('SystemInfo.getProcessInfo', {}, false)).processInfo;
|
||||||
const nonCriticalProcs = procs.filter(x => x[1].includes('type='));
|
const nonCriticalProcs = procs.filter(x => x.type !== 'browser');
|
||||||
|
|
||||||
await killProcesses(nonCriticalProcs.map(x => x[0]));
|
await killProcesses(nonCriticalProcs.map(x => x.id));
|
||||||
log(`killed ${nonCriticalProcs.length} processes`);
|
log(`killed ${nonCriticalProcs.length} processes`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user