您的位置:首页 > 文旅 > 美景 > 创业计划书模板_石家庄是几线城市_百度平台推广该怎么做_中国目前最好的搜索引擎

创业计划书模板_石家庄是几线城市_百度平台推广该怎么做_中国目前最好的搜索引擎

2025/7/22 10:56:41 来源:https://blog.csdn.net/qq_38983511/article/details/147184611  浏览:    关键词:创业计划书模板_石家庄是几线城市_百度平台推广该怎么做_中国目前最好的搜索引擎
创业计划书模板_石家庄是几线城市_百度平台推广该怎么做_中国目前最好的搜索引擎

Node.js 中 os 模块全部 API 详解

1. 系统信息

const os = require('os');// 1. 操作系统平台
console.log('操作系统平台:', os.platform());  // 'darwin', 'win32', 'linux' 等// 2. 操作系统类型
console.log('操作系统类型:', os.type());  // 'Darwin', 'Windows_NT', 'Linux' 等// 3. 操作系统版本
console.log('操作系统版本:', os.release());  // '18.7.0', '10.0.19041' 等// 4. 操作系统架构
console.log('操作系统架构:', os.arch());  // 'x64', 'arm64' 等// 5. 主机名
console.log('主机名:', os.hostname());// 6. 系统运行时间
console.log('系统运行时间(秒):', os.uptime());// 7. 系统负载
console.log('系统负载:', os.loadavg());  // [1.5, 1.2, 1.0] 1分钟、5分钟、15分钟的平均负载// 8. 系统常量
console.log('系统常量:', {EOL: os.EOL,  // 行尾符号constants: os.constants  // 系统常量
});

2. CPU 信息

const os = require('os');// 1. CPU 架构
console.log('CPU 架构:', os.arch());// 2. CPU 核心数
console.log('CPU 核心数:', os.cpus().length);// 3. CPU 详细信息
const cpus = os.cpus();
cpus.forEach((cpu, index) => {console.log(`CPU ${index}:`, {model: cpu.model,      // CPU 型号speed: cpu.speed,      // CPU 速度(MHz)times: {               // CPU 时间user: cpu.times.user,       // 用户代码使用时间nice: cpu.times.nice,       // 优先级进程使用时间sys: cpu.times.sys,         // 系统代码使用时间idle: cpu.times.idle,       // 空闲时间irq: cpu.times.irq          // 中断请求时间}});
});// 4. CPU 使用率计算
function getCPUUsage() {const cpus = os.cpus();const total = cpus.reduce((acc, cpu) => {const total = Object.values(cpu.times).reduce((a, b) => a + b);return acc + total;}, 0);const idle = cpus.reduce((acc, cpu) => acc + cpu.times.idle, 0);return ((total - idle) / total) * 100;
}console.log('CPU 使用率:', getCPUUsage(), '%');

3. 内存信息

const os = require('os');// 1. 总内存
console.log('总内存:', os.totalmem(), 'bytes');
console.log('总内存:', os.totalmem() / 1024 / 1024, 'MB');
console.log('总内存:', os.totalmem() / 1024 / 1024 / 1024, 'GB');// 2. 空闲内存
console.log('空闲内存:', os.freemem(), 'bytes');
console.log('空闲内存:', os.freemem() / 1024 / 1024, 'MB');
console.log('空闲内存:', os.freemem() / 1024 / 1024 / 1024, 'GB');// 3. 内存使用率
function getMemoryUsage() {const total = os.totalmem();const free = os.freemem();return ((total - free) / total) * 100;
}console.log('内存使用率:', getMemoryUsage(), '%');// 4. 内存详细信息
function getMemoryInfo() {const total = os.totalmem();const free = os.freemem();const used = total - free;return {total: {bytes: total,mb: total / 1024 / 1024,gb: total / 1024 / 1024 / 1024},free: {bytes: free,mb: free / 1024 / 1024,gb: free / 1024 / 1024 / 1024},used: {bytes: used,mb: used / 1024 / 1024,gb: used / 1024 / 1024 / 1024},usage: (used / total) * 100};
}console.log('内存详细信息:', getMemoryInfo());

4. 网络接口

const os = require('os');// 1. 网络接口信息
const interfaces = os.networkInterfaces();
console.log('网络接口:', interfaces);// 2. 获取本地 IP 地址
function getLocalIP() {const interfaces = os.networkInterfaces();for (const name of Object.keys(interfaces)) {for (const interface of interfaces[name]) {// 跳过内部接口和非 IPv4 地址if (interface.internal || interface.family !== 'IPv4') {continue;}return interface.address;}}return '127.0.0.1';
}console.log('本地 IP 地址:', getLocalIP());// 3. 获取所有网络接口信息
function getNetworkInfo() {const interfaces = os.networkInterfaces();const info = {};for (const name of Object.keys(interfaces)) {info[name] = interfaces[name].map(interface => ({address: interface.address,family: interface.family,internal: interface.internal,netmask: interface.netmask,mac: interface.mac}));}return info;
}console.log('网络接口详细信息:', getNetworkInfo());

5. 用户信息

const os = require('os');// 1. 当前用户信息
console.log('当前用户:', os.userInfo());// 2. 主目录
console.log('主目录:', os.homedir());// 3. 临时目录
console.log('临时目录:', os.tmpdir());// 4. 用户详细信息
function getUserInfo() {const user = os.userInfo();return {username: user.username,uid: user.uid,gid: user.gid,homedir: user.homedir,shell: user.shell};
}console.log('用户详细信息:', getUserInfo());

6. 系统常量

const os = require('os');// 1. 信号常量
console.log('信号常量:', os.constants.signals);// 2. 错误码常量
console.log('错误码常量:', os.constants.errno);// 3. 优先级常量
console.log('优先级常量:', os.constants.priority);// 4. 文件系统常量
console.log('文件系统常量:', os.constants.fs);// 5. 网络常量
console.log('网络常量:', os.constants.net);

7. 实用工具函数

const os = require('os');// 1. 系统信息摘要
function getSystemInfo() {return {platform: os.platform(),type: os.type(),release: os.release(),arch: os.arch(),hostname: os.hostname(),uptime: os.uptime(),loadavg: os.loadavg(),totalmem: os.totalmem(),freemem: os.freemem(),cpus: os.cpus().length,networkInterfaces: os.networkInterfaces(),userInfo: os.userInfo(),homedir: os.homedir(),tmpdir: os.tmpdir()};
}// 2. 性能监控
function monitorPerformance(interval = 1000) {let lastCPUUsage = getCPUUsage();let lastCheck = Date.now();setInterval(() => {const now = Date.now();const cpuUsage = getCPUUsage();const memoryUsage = getMemoryUsage();console.log('性能监控:', {timestamp: new Date().toISOString(),cpu: {usage: cpuUsage,change: cpuUsage - lastCPUUsage},memory: {usage: memoryUsage,free: os.freemem() / 1024 / 1024,total: os.totalmem() / 1024 / 1024},load: os.loadavg(),uptime: os.uptime()});lastCPUUsage = cpuUsage;lastCheck = now;}, interval);
}// 3. 网络诊断
function networkDiagnostics() {const interfaces = os.networkInterfaces();const diagnostics = {};for (const name of Object.keys(interfaces)) {diagnostics[name] = interfaces[name].map(interface => ({address: interface.address,family: interface.family,internal: interface.internal,netmask: interface.netmask,mac: interface.mac,status: interface.internal ? 'internal' : 'external'}));}return diagnostics;
}// 4. 系统健康检查
function healthCheck() {const cpuUsage = getCPUUsage();const memoryUsage = getMemoryUsage();const load = os.loadavg();return {status: 'healthy',checks: {cpu: {usage: cpuUsage,status: cpuUsage < 80 ? 'ok' : 'warning'},memory: {usage: memoryUsage,status: memoryUsage < 90 ? 'ok' : 'warning'},load: {'1m': load[0],'5m': load[1],'15m': load[2],status: load[0] < os.cpus().length ? 'ok' : 'warning'}},timestamp: new Date().toISOString()};
}

8. 实际应用示例

const os = require('os');// 1. 系统监控服务
class SystemMonitor {constructor(interval = 5000) {this.interval = interval;this.history = [];this.maxHistory = 100;}start() {this.timer = setInterval(() => {const stats = this.collectStats();this.history.push(stats);if (this.history.length > this.maxHistory) {this.history.shift();}this.checkAlerts(stats);}, this.interval);}stop() {clearInterval(this.timer);}collectStats() {return {timestamp: new Date().toISOString(),cpu: {usage: getCPUUsage(),cores: os.cpus().length,load: os.loadavg()},memory: {total: os.totalmem(),free: os.freemem(),usage: getMemoryUsage()},network: networkDiagnostics(),uptime: os.uptime()};}checkAlerts(stats) {if (stats.cpu.usage > 80) {console.warn('CPU 使用率过高:', stats.cpu.usage, '%');}if (stats.memory.usage > 90) {console.warn('内存使用率过高:', stats.memory.usage, '%');}if (stats.cpu.load[0] > os.cpus().length) {console.warn('系统负载过高:', stats.cpu.load[0]);}}getHistory() {return this.history;}getCurrentStats() {return this.collectStats();}
}// 2. 系统信息 API
const express = require('express');
const app = express();app.get('/api/system', (req, res) => {res.json(getSystemInfo());
});app.get('/api/performance', (req, res) => {res.json({cpu: {usage: getCPUUsage(),cores: os.cpus().length,load: os.loadavg()},memory: {total: os.totalmem(),free: os.freemem(),usage: getMemoryUsage()}});
});app.get('/api/network', (req, res) => {res.json(networkDiagnostics());
});app.get('/api/health', (req, res) => {res.json(healthCheck());
});// 3. 系统资源限制
function checkResourceLimits() {const limits = {cpu: {cores: os.cpus().length,load: os.loadavg()[0],threshold: os.cpus().length * 0.8},memory: {total: os.totalmem(),free: os.freemem(),threshold: os.totalmem() * 0.9}};return {limits,warnings: {cpu: limits.cpu.load > limits.cpu.threshold,memory: limits.memory.free < (limits.memory.total - limits.memory.threshold)}};
}

os 模块的主要特点:

  1. 提供系统信息和资源使用情况
  2. 支持 CPU、内存、网络等硬件信息获取
  3. 提供用户和系统常量信息
  4. 支持性能监控和诊断
  5. 跨平台兼容性好

使用建议:

  1. 合理使用系统资源监控
  2. 注意内存使用和 CPU 负载
  3. 实现适当的告警机制
  4. 考虑跨平台兼容性
  5. 定期清理临时文件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com