2015-02-24 18 views
5

Làm cách nào để có được thời gian hoạt động của máy chủ trong Node.js vì vậy tôi có thể xuất nó bằng một lệnh như;Làm cách nào để có được thời gian hoạt động của máy chủ trong Node.js?

if(commandCheck("/uptime")){ 
    Give server uptime; 
} 

Bây giờ tôi không biết cách tính thời gian hoạt động từ khi khởi động của máy chủ.

+3

tôi nhận ra nó không rõ ràng từ câu hỏi của bạn, khi nào bạn nói "máy chủ", bạn có nghĩa là thời gian hoạt động của quá trình máy chủ nút hoặc thời gian hoạt động của hệ thống mà quá trình đang chạy không? – loganfsmyth

Trả lời

2

Bạn có thể làm gì để có định dạng thời gian bình thường;

String.prototype.toHHMMSS = function() { 
    var sec_num = parseInt(this, 10); // don't forget the second param 
    var hours = Math.floor(sec_num/3600); 
    var minutes = Math.floor((sec_num - (hours * 3600))/60); 
    var seconds = sec_num - (hours * 3600) - (minutes * 60); 

    if (hours < 10) {hours = "0"+hours;} 
    if (minutes < 10) {minutes = "0"+minutes;} 
    if (seconds < 10) {seconds = "0"+seconds;} 
    var time = hours+':'+minutes+':'+seconds; 
    return time; 
} 

if(commandCheck("/uptime")){ 
    var time = process.uptime(); 
    var uptime = (time + "").toHHMMSS(); 
    console.log(uptime); 
} 
+6

Không có gì về điều này đòi hỏi phải tăng thêm nguyên mẫu chuỗi. – loganfsmyth

+5

Dòng dưới cùng: 'process.uptime();' - phần còn lại là không cần thiết. – jpoveda

+0

bạn có chắc chắn rằng toán học của bạn trong nhiều giờ là chính xác không? tôi nghĩ rằng bạn cần trừ đi số ngày đã vượt quá: 'var hours = Math.floor ((giây - (ngày * 86000))/3600); ' – bpile

1

Tôi không chắc chắn nếu bạn đang nói về một máy chủ HTTP, một máy thực tế (hoặc VPS) hoặc chỉ là một ứng dụng Node nói chung. Đây là một ví dụ cho một máy chủ http trong Node.

Lưu trữ thời gian khi máy chủ của bạn bắt đầu bằng cách nhận Date.now() bên trong cuộc gọi lại listen. Và sau đó bạn có thể tính toán thời gian hoạt động bằng cách trừ giá trị này từ Date.now() tại một thời điểm khác.

var http = require('http'); 

var startTime; 

var server = http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Uptime: ' + (Date.now() - startTime) + 'ms'); 
}); 

server.listen(3000, function() { 
    startTime = Date.now(); 
}); 
9

Bạn có thể sử dụng process.uptime(). Chỉ cần gọi để nhận số giây kể từ khi bắt đầu node.

function format(seconds){ 
    function pad(s){ 
    return (s < 10 ? '0' : '') + s; 
    } 
    var hours = Math.floor(seconds/(60*60)); 
    var minutes = Math.floor(seconds % (60*60)/60); 
    var seconds = Math.floor(seconds % 60); 

    return pad(hours) + ':' + pad(minutes) + ':' + pad(seconds); 
} 

var uptime = process.uptime(); 
console.log(format(uptime)); 
+0

Chức năng này có định dạng thời gian sao cho tôi có thể sử dụng hh: mm: ss – Inna

3

Giả sử này là một máy chủ * nix, bạn có thể sử dụng lệnh uptime vỏ bằng child_process:

var child = require('child_process'); 
child.exec('uptime', function (error, stdout, stderr) { 
    console.log(stdout); 
}); 

Nếu bạn muốn định dạng giá trị khác nhau hoặc vượt qua nó thông qua một nơi khác, nó phải là tầm thường để làm như vậy.

CHỈNH SỬA: Định nghĩa về thời gian hoạt động có vẻ hơi không rõ ràng. Giải pháp này sẽ cho người dùng biết thiết bị đã được bật cho bao lâu, có thể hoặc không thể là thứ bạn đang sử dụng.

0

Để có được thời gian hoạt động unix trong ms syncronously:

const fs= require("fs"); 

function getSysUptime(){ 

    return parseFloat(fs.readFileSync("/proc/uptime", { 
     "encoding": "utf8" 
    }).split(" ")[0])*1000; 

} 

console.log(getSysUptime()); 
2

Để có được thời gian hoạt động quá trình trong giây

console.log(process.uptime()) 

Để có được thời gian hoạt động hệ điều hành trong vài giây

console.log(require('os').uptime()) 
+0

Điều này dường như không hiệu quả đối với tôi. Trả lại 171755 giây ngay sau khi bắt đầu ứng dụng – ChrisRich

+0

Đây phải là câu trả lời đúng. Máy chủ và thời gian hoạt động của quá trình. – Casey

Các vấn đề liên quan