2012-11-03 17 views
7

Gram z węzłem i właśnie zainstalowałem go na moim komputerze. Teraz chcę uzyskać listę procesów uruchomionych na moim komputerze, aby sprawdzić, czy działa apache i czy uruchomiono mysql itp.? jak mogę to zrobić. Mam po prostu bardzo podstawowy kod w moim pliku js. Ja nawet nie wiem od czego zacząć na ten tutaj jest mój kodjak zdobyć listę procesów

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); 

Dzięki

+0

Z jakiego systemu operacyjnego korzystasz? – Srinivas

+1

Windows, ale byłoby dobrze, gdybyś miał coś na Windowsa i Linuksa – Autolycus

+0

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

Odpowiedz

10

O ile wiem, nie ma moduł (jeszcze) to zrobić cross-platform. Możesz użyć funkcji API procesu potomnego, aby uruchomić narzędzia, które dadzą pożądane dane. W przypadku systemu Windows wystarczy uruchomić wbudowany proces listy zadań.

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

Jak czytać proces i jego proces potomny również? – YumYumYum

+0

Bardzo podoba mi się ta metoda, jest znacznie szybsza i zużywa mniej pamięci niż inne moduły węzłów, których próbowałem. Czy znasz odpowiednik mac/linux do listy zadań? –

8

Zobacz ps-node

Aby uzyskać listę procesów w węźle:

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: funkcja arguments wyszukuje procesy rozpoczęte z tymi argumentami. Na przykład "węzeł myScript.js --debug" –

+1

węzeł ps nie działa na platformie krzyżowej – CodeAndCats

+0

Wybrana odpowiedź na tej stronie wyjaśnia podstawową koncepcję psu. Dodawanie obsługi innych systemów operacyjnych wygląda stosunkowo łatwo. https://github.com/neekey/ps/blob/master/lib/index.js – Eddie

0

rozwiązanie dla systemów UNIX, takich jak:

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); 
    }); 
} 

przykłady użycia oraz wyniki

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") środowisko

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 

Testowanie

$ 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

Można również użyć bieżących procesów, które wymienia cały proces es. https://www.npmjs.com/package/current-processes

Wynik zawiera nazwę, PID, procesora i pamięci stosowane w procesie. Możesz także sortować wyniki i ograniczać liczbę procesów. Wynik wygląda tak:

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

ps-list jest lepszy pakiet węzeł do pracy, to działa na platformach Linux, BSD i Windows też.

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

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