2012-11-03 37 views
7

Tôi đang phát xung quanh với nút và vừa cài đặt nó trên máy của mình. Bây giờ tôi muốn có được một danh sách các quá trình chạy trên máy tính của tôi vì vậy tôi có thể nhìn thấy nếu apache đang chạy và nếu mysql được bắt đầu vv? Làm thế nào tôi có thể làm điều đó. Tôi chỉ có mã rất cơ bản trong tập tin js của tôi. Tôi không còn biết bắt đầu từ đâu trên này ở đây là mã của tôicách lấy danh sách quy trình

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

Cảm ơn

+0

Bạn đang sử dụng hệ điều hành nào? – Srinivas

+1

cửa sổ, nhưng sẽ tốt nếu bạn có thứ gì đó cho cửa sổ và linux – Autolycus

+0

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

Trả lời

10

Theo như tôi biết có không phải là một mô-đun (chưa) để làm nền tảng này. Bạn có thể sử dụng API quy trình con để khởi chạy các công cụ sẽ cung cấp dữ liệu bạn muốn. Đối với Windows, chỉ cần khởi chạy quá trình danh sách tác vụ được tích hợp sẵn.

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

Cách đọc quy trình và quy trình con con của nó cũng vậy? – YumYumYum

+0

Tôi thực sự thích phương pháp này, nó nhanh hơn nhiều và sử dụng ít bộ nhớ hơn các mô-đun nút khác mà tôi đã thử. Bạn có biết mac/linux tương đương với tasklist không? –

8

Xem ps-node

Để có được một danh sách các quá trình trong nút:

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: hàm đối số tìm kiếm các quy trình được bắt đầu bằng các đối số đó. Ví dụ, "nút myScript.js --debug" –

+1

ps-node dường như không hoạt động trên nền tảng – CodeAndCats

+0

Câu trả lời được chọn trên trang này giải thích khái niệm cơ bản đằng sau ps. Việc thêm hỗ trợ cho các hệ điều hành khác có vẻ tương đối dễ dàng. https://github.com/neekey/ps/blob/master/lib/index.js – Eddie

0

Giải pháp cho các hệ thống 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); 
    }); 
} 

Ví dụ sử dụng và kết quả

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

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 

Kiểm tra môi trường

$ 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

Bạn cũng có thể sử dụng vãng quá trình trong đó liệt kê tất cả các quá trình này es. https://www.npmjs.com/package/current-processes

Kết quả bao gồm tên, pid, cpunhớ sử dụng bởi quá trình. Bạn cũng có thể sắp xếp kết quả và giới hạn số lượng quy trình. Kết quả trông như thế này:

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

ps-list là một gói nút tốt hơn cho công việc, nó đang làm việc trên nền tảng Linux, BSD, và Windows quá.

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

psList().then(data => { 
    console.log(data); 
    //=> [{pid: 3213, name: 'node', cmd: 'node test.js', cpu: '0.1'}, ...] 
}); 
Các vấn đề liên quan