From 1e3a80e921602a3bb1f3e15f0d25468c0be4e242 Mon Sep 17 00:00:00 2001 From: Sebastian Hildebrandt Date: Wed, 13 Jan 2021 19:13:24 +0100 Subject: [PATCH] services() improved service discovery (linux) --- CHANGELOG.md | 1 + docs/history.html | 5 +++++ docs/index.html | 2 +- lib/processes.js | 43 +++++++++++++++++++++++++++++++++---------- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6db9f9a..147ca1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ For major (breaking) changes - version 3 and 2 see end of page. | Version | Date | Comment | | -------------- | -------------- | -------- | +| 4.34.7 | 2020-01-13 | `services()` improved service discovery (linux) | | 4.34.6 | 2020-01-12 | `networkInterfaces()` catch errors | | 4.34.5 | 2020-01-07 | `networkInterfaceDefault()` fixed CMD popup (windows) | | 4.34.4 | 2020-01-06 | `system()` fixed vitrual catch error | diff --git a/docs/history.html b/docs/history.html index e0a6531..5ab66f6 100644 --- a/docs/history.html +++ b/docs/history.html @@ -83,6 +83,11 @@ + + 4.34.7 + 2020-01-13 + services() improved service discovery linux + 4.34.6 2020-01-12 diff --git a/docs/index.html b/docs/index.html index 1bb0e77..4af9bcf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -169,7 +169,7 @@
systeminformation
-
Current Version: 4.34.6
+
Current Version: 4.34.7
diff --git a/lib/processes.js b/lib/processes.js index 857905f..3e8da02 100644 --- a/lib/processes.js +++ b/lib/processes.js @@ -124,16 +124,38 @@ function services(srv, callback) { if (_linux || _freebsd || _openbsd || _netbsd || _darwin) { if ((_linux || _freebsd || _openbsd || _netbsd) && srvString === '*') { - srvString = ''; - let tmpsrv = execSync('service --status-all 2> /dev/null').toString().split('\n'); - for (const s of tmpsrv) { - const parts = s.split(']'); - if (parts.length === 2) { - srvString += (srvString !== '' ? '|' : '') + parts[1].trim(); - allSrv.push({ name: parts[1].trim(), running: parts[0].indexOf('+') > 0 }); + try { + srvString = ''; + const tmpsrv = execSync('service --status-all 2> /dev/null').toString().split('\n'); + for (const s of tmpsrv) { + const parts = s.split(']'); + if (parts.length === 2) { + srvString += (srvString !== '' ? '|' : '') + parts[1].trim(); + allSrv.push({ name: parts[1].trim(), running: parts[0].indexOf('+') > 0 }); + } + } + srvs = srvString.split('|'); + } catch (e) { + try { + const srvStr = execSync('ls /etc/init.d/ -m 2> /dev/null').toString().split('\n').join(''); + srvString = ''; + if (srvStr) { + const tmpsrv = srvStr.split(','); + for (const s of tmpsrv) { + const name = s.trim(); + if (name) { + srvString += (srvString !== '' ? '|' : '') + name; + allSrv.push({ name: name, running: null }); + } + } + srvs = srvString.split('|'); + } + } catch (f) { + allSrv = []; + srvString = ''; + srvs = []; } } - srvs = srvString.split('|'); } let comm = (_darwin) ? 'ps -caxo pcpu,pmem,pid,command' : 'ps -axo pcpu,pmem,pid,command'; if (srvString !== '' && srvs.length > 0) { @@ -152,7 +174,7 @@ function services(srv, callback) { return (e.toLowerCase().indexOf(' ' + srv + ':') !== -1) || (e.toLowerCase().indexOf('/' + srv) !== -1); }); } - let singleSrv = allSrv.filter(item => { return item.name === srv; }); + // let singleSrv = allSrv.filter(item => { return item.name === srv; }); const pids = []; for (const p of ps) { const pid = p.trim().split(' ')[2]; @@ -162,7 +184,8 @@ function services(srv, callback) { } result.push({ name: srv, - running: (allSrv.length && singleSrv.length ? singleSrv[0].running : ps.length > 0), +// running: (allSrv.length && singleSrv.length && singleSrv[0].running !== null ? singleSrv[0].running : ps.length > 0), + running: ps.length > 0, startmode: '', pids: pids, pcpu: parseFloat((ps.reduce(function (pv, cv) {