Node.js 獲取電腦CPU/內存/網卡等信息

node 調用linxu命令

var exec = require('child_process').exec;
var cmdStr = 'ls -l';
exec(cmdStr, function (err, stdout, srderr) {
    if (err) {
        console.log(srderr);
    } else {
        console.log(stdout);
    }
});

top 執行一次、顯示所有進程信息

1、執行一次 
top命令會動態顯示信息,若需要靜態的,比如只執行一次,或者只需要關於CPU的分析的那幾行,則使用代以下參數的命令: 
top -n 1 
top執行一次,這樣便可以很方便的取出信息,比如把這個信息存到一個文件中。

top -n 1 | head -n 5 
顯示 top 的前面幾行

top -n 1 | grep ‘^Cpu’ 
只顯示 Cpu 那一行 
2、顯示所有進程信息 
用top只能顯示一部分進程 
top -b 
top -b -n 1 
這樣就可以顯示所有進程信息。

node 獲取電腦CPU/內存/網卡等信息;
轉載,已驗證!

const os = require('os');
 
var dealTime = (seconds)=>{
    var seconds = seconds|0;
    var day = (seconds/(3600*24))|0;
    var hours = ((seconds-day*3600)/3600)|0;
    var minutes = ((seconds-day*3600*24-hours*3600)/60)|0;
    var second = seconds%60;
    (day<10)&&(day='0'+day);
    (hours<10)&&(hours='0'+hours);
    (minutes<10)&&(minutes='0'+minutes);
    (second<10)&&(second='0'+second);
    return [day,hours,minutes,second].join(':');
};
 
var dealMem = (mem)=>{
    var G = 0,
        M = 0,
        KB = 0;
    (mem>(1<<30))&&(G=(mem/(1<<30)).toFixed(2));
    (mem>(1<<20))&&(mem<(1<<30))&&(M=(mem/(1<<20)).toFixed(2));
    (mem>(1<<10))&&(mem>(1<<20))&&(KB=(mem/(1<<10)).toFixed(2));
    return G>0?G+'G':M>0?M+'M':KB>0?KB+'KB':mem+'B';
};
 
//cpu架構
const arch = os.arch();
console.log("cpu架構:"+arch);
 
//操作系統內核
const kernel = os.type();
console.log("操作系統內核:"+kernel);
 
//操作系統平臺
const pf = os.platform();
console.log("平臺:"+pf);
 
//系統開機時間
const uptime = os.uptime();
console.log("開機時間:"+dealTime(uptime));
 
//主機名
const hn = os.hostname();
console.log("主機名:"+hn);
 
//主目錄
const hdir = os.homedir();
console.log("主目錄:"+hdir);
 
 
//內存
const totalMem = os.totalmem();
const freeMem = os.freemem();
console.log("內存大小:"+dealMem(totalMem)+' 空閒內存:'+dealMem(freeMem));
 
//cpu
const cpus = os.cpus();
console.log('*****cpu信息*******');
cpus.forEach((cpu,idx,arr)=>{
    var times = cpu.times;
    console.log(`cpu${idx}:`);
    console.log(`型號:${cpu.model}`);
    console.log(`頻率:${cpu.speed}MHz`);
    console.log(`使用率:${((1-times.idle/(times.idle+times.user+times.nice+times.sys+times.irq))*100).toFixed(2)}%`);
});
 
//網卡
console.log('*****網卡信息*******');
const networksObj = os.networkInterfaces();
for(let nw in networksObj){
    let objArr = networksObj[nw];
    console.log(`\r\n${nw}:`);
    objArr.forEach((obj,idx,arr)=>{
        console.log(`地址:${obj.address}`);
        console.log(`掩碼:${obj.netmask}`);
        console.log(`物理地址:${obj.mac}`);
        console.log(`協議族:${obj.family}`);
    });
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章