services() improved service discovery (linux)

This commit is contained in:
Sebastian Hildebrandt
2021-01-13 19:13:24 +01:00
parent 372236de15
commit 1e3a80e921
4 changed files with 40 additions and 11 deletions
+33 -10
View File
@@ -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) {