2016-06-25 3 views

Antwort

6

Sie können das Paket ps-node verwenden.

https://www.npmjs.com/package/ps-node

var ps = require('ps-node'); 

// A simple pid lookup 
ps.lookup({ 
    command: 'node', 
    psargs: 'ux' 
    }, function(err, resultList) { 
    if (err) { 
     throw new Error(err); 
    } 

    resultList.forEach(function(process){ 
     if(process){ 
      console.log('PID: %s, COMMAND: %s, ARGUMENTS: %s', process.pid, process.command, process.arguments); 
     } 
    }); 
}); 

Ich glaube, Sie bei diesem Beispiel suchen werden. Schauen Sie sich die Seite an, sie haben viele andere Nutzungen. Versuche es.

Nur wenn Sie nicht an Nodejs gebunden sind, können Sie von der Linux-Befehlszeile aus auch ps -ef | grep "YOUR_PROCESS_NAME_e.g._nodejs" nach einem laufenden Prozess suchen.

2

Folgendes sollte funktionieren. Eine Prozessliste wird basierend auf dem Betriebssystem generiert und diese Ausgabe wird für das gewünschte Programm analysiert. Die Funktion benötigt drei Argumente, jeder ist nur der erwartete Prozessname auf dem entsprechenden Betriebssystem.

In meiner Erfahrung braucht ps-node WAY zu viel Speicher und Zeit, um nach dem Prozess zu suchen. Diese Lösung ist besser, wenn Sie häufig nach Prozessen suchen möchten.

const exec = require('child_process').exec 
 

 
function isRunning(win, mac, linux){ 
 
    return new Promise(function(resolve, reject){ 
 
     const plat = process.platform 
 
     const cmd = plat == 'win32' ? 'tasklist' : (plat == 'darwin' ? 'ps -ax | grep ' + mac : (plat == 'linux' ? 'ps -A' : '')) 
 
     const proc = plat == 'win32' ? win : (plat == 'darwin' ? mac : (plat == 'linux' ? linux : '')) 
 
     if(cmd === '' || proc === ''){ 
 
      resolve(false) 
 
     } 
 
     exec(cmd, function(err, stdout, stderr) { 
 
      resolve(stdout.toLowerCase().indexOf(proc.toLowerCase()) > -1) 
 
     }) 
 
    }) 
 
} 
 

 
isRunning('myprocess.exe', 'myprocess', 'myprocess').then((v) => console.log(v))

Verwandte Themen