可以通过os模块和fs模块访问系统的资源
有一些第三方库对os进行了封装,比如os-utils,可以更加方便的获取系统资源
# 安装os-utils
pnpm install os-utils
# 安装os-utils的类型定义
pnpm install @types/os-utils --save-devimport osUtils from 'os-utils';
import fs from 'fs';
import os from 'os';
export async function pollResources() {
const cpuUsage = await getCpuUsage();
const cpuFree = await getCpuFree();
const cpuCount = osUtils.cpuCount();
const cpuModel = os.cpus()[0].model;
const freemem = osUtils.freemem();
const totalmem = osUtils.totalmem();
const freememPercentage = osUtils.freememPercentage();
const sysUptime = osUtils.sysUptime();
const processUptime = osUtils.processUptime();
const loadavg = osUtils.loadavg(1);
const storageData = getStorageData();
console.log({
下一秒cpu使用率: `${cpuUsage * 100}%`,
下一秒cpu可用率: `${cpuFree * 100}%`,
cpu数量: cpuCount,
cpu型号: cpuModel,
可用内存: `${freemem / 1000} GB`,
总内存: `${totalmem / 1000} GB`,
可用内存百分比: `${freememPercentage * 100}%`,
系统已运行时间: `${sysUptime} 秒`,
进程已运行时间: `${processUptime} 秒`,
'1分钟内平均负载': loadavg,
系统盘大小: storageData.total,
系统盘已使用: storageData.usage,
});
return {
cpuUsage,
cpuFree,
cpuCount,
freemem,
totalmem,
freememPercentage,
sysUptime,
processUptime,
loadavg,
storageData,
};
}
/** @function 获取cpu使用率 */
function getCpuUsage(): Promise<number> {
return new Promise((resolve) => {
osUtils.cpuUsage(resolve);
});
}
/** @function 获取cpu可用率 */
function getCpuFree(): Promise<number> {
return new Promise((resolve) => {
osUtils.cpuFree(resolve);
});
}
/** @function 获取系统盘使用情况 */
function getStorageData() {
const stats = fs.statfsSync(process.platform === 'win32' ? 'C://' : '/');
const total = stats.blocks * stats.bsize;
const free = stats.bfree * stats.bsize;
return {
total: Math.floor(total / 1024 / 1024 / 1024),
usage: `${(1 - free / total) * 100}%`,
};
}运行结果
{
'cpu使用率': '3.370928906349002%',
'cpu可用率': '99.42050428456939%',
'cpu数量': 16,
'cpu型号': '13th Gen Intel(R) Core(TM) i5-13490F',
'可用内存': '23.63051953125 GB',
'总内存': '32.618953125 GB',
'可用内存百分比': '72.4441263778296%',
'系统已运行时间': '2525.703 秒',
'进程已运行时间': '2.1498559 秒',
'1分钟内平均负载': 0,
'系统盘大小': 199,
'系统盘已使用': '43.24668964448054%'
}