2012-11-03 12 views
7

Sto giocando con il nodo e l'ho appena installato sulla mia macchina. Ora voglio ottenere un elenco di processi in esecuzione sulla mia macchina in modo da poter vedere se Apache è in esecuzione e se mysql è avviato ecc.? Come lo posso fare. Ho solo un codice molto semplice nel mio file js. Io non so nemmeno da dove cominciare su questo Ecco il mio codicecome ottenere l'elenco dei processi

var http = require('http'); 
http.createServer(function(request, response){ 
    response.writeHead(200); 
    response.write("Hello world"); 
    console.log('Listenning on port 1339'); 
    response.end(); 


}).listen(8080); 

Grazie

+0

Quale sistema operativo stai utilizzando? – Srinivas

+1

windows, ma sarebbe utile se si ha qualcosa per windows e linux – Autolycus

+0

https://github.com/viatropos/parse-processes/blob/master/index.js –

risposta

10

Per quanto ne so non c'è un modulo (ancora) di fare questo cross-platform. È possibile utilizzare l'API del processo figlio per avviare strumenti che forniranno i dati desiderati. Per Windows, basta avviare il processo della lista di attività incorporata.

var exec = require('child_process').exec; 
exec('tasklist', function(err, stdout, stderr) { 
    // stdout is a string containing the output of the command. 
    // parse it and look for the apache and mysql processes. 
}); 
+1

Come leggere anche il processo e il suo sottoprocesso secondario? – YumYumYum

+0

Mi piace molto questo metodo, è molto più veloce e utilizza meno memoria rispetto agli altri moduli nodo che ho provato. Conoscete l'equivalente mac/linux alla tasklist? –

8

Vedi ps-node

Per ottenere un elenco dei processi in nodo:

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

ps.lookup({ 
command: 'node', 
arguments: '--debug', 
}, 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); 
     } 
    }); 
}); 
+1

FYI: la funzione arguments cerca i processi avviati con quegli argomenti. Ad esempio, "node myScript.js --debug" –

+1

ps-node non sembra funzionare su più piattaforme – CodeAndCats

+0

La risposta selezionata in questa pagina spiega il concetto di base dietro ps. Aggiungere supporto per altri sistemi operativi sembra relativamente facile. https://github.com/neekey/ps/blob/master/lib/index.js – Eddie

0

soluzione per sistemi Unix-like:

const child_process = require('child_process'); 

const displayProcessBy = (pattern) => { 
    let command = `ps -aux | grep ${pattern}`; 
    child_process.exec(command, (err, stdout, stdin) => { 
     if (err) throw err; 
     console.log(stdout); 
    }); 
} 

esempi di utilizzo e risultati

displayProcessBy ("nodejs");

setivol+ 7912 0.0 0.0 12732 2108 ?  S 10:56 0:00 grep nodejs 
setivol+ 12427 0.0 0.0 669552 712 pts/3 Tl Dec16 0:00 nodejs 
setivol+ 14400 0.0 0.0 669552 644 pts/2 Tl Dec15 0:00 nodejs 
setivol+ 14412 0.0 0.0 670576 224 pts/3 Tl Dec16 0:00 nodejs 
setivol+ 14567 0.0 0.0 669552 436 pts/3 Tl Dec15 0:00 nodejs 
setivol+ 14911 0.0 0.0 669552  0 pts/3 Tl Dec15 0:00 nodejs 
setivol+ 15489 0.0 0.0 669552 712 pts/3 Tl Dec16 0:00 nodejs 
setivol+ 15659 0.0 0.0 669520  0 pts/3 Tl Dec16 0:00 nodejs --harmony 
setivol+ 16469 0.0 0.0 669520 704 pts/3 Tl Dec16 0:00 nodejs --harmony 
setivol+ 20514 0.0 0.0 669552 664 pts/2 Tl Dec15 0:00 nodejs 

displayProcessBy ("python2") ambiente

setivol+ 8012 0.0 0.0 4336 712 ?  S 10:58 0:00 /bin/sh -c ps -aux | grep python2 
setivol+ 8014 0.0 0.0 12728 2240 ?  S 10:58 0:00 grep python2 

Testing

$ uname -a 
Linux localhost 3.16.0-4-amd64 #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) x86_64 GNU/Linux 
$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Debian 
Description: Debian GNU/Linux 8.6 (jessie) 
Release: 8.6 
Codename: jessie 
1

È inoltre possibile utilizzare attuali processi in cui sono elencati tutti i processi es. https://www.npmjs.com/package/current-processes

Il risultato include nome, pid, CPU e memoria utilizzata dal processo. È inoltre possibile ordinare il risultato e limitare il numero di processi. Il risultato è simile al seguente:

[ Process { 
pid: 31834, 
name: 'atom', 
cpu: 84, 
mem: { private: 19942400, virtual: 2048, usage: 0.4810941724241514 } }] 
2

ps-list è un pacchetto migliore di nodo per il lavoro, si sta lavorando su piattaforme Linux BSD e Windows troppo.

const psList = require('ps-list'); 

psList().then(data => { 
    console.log(data); 
    //=> [{pid: 3213, name: 'node', cmd: 'node test.js', cpu: '0.1'}, ...] 
}); 
Problemi correlati