当前位置:嗨网首页>书籍在线阅读

02-探索操作系统

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

[toc]

6.1 探索操作系统

有些技术成功地屏蔽了不同操作系统之间的差异,而有些技术则需要花费很多精力来处理不同操作系统之间的差异。Node刚好介于这二者之间。在大多数情况下,你创建的应用可以在所有地方运行。但有些功能依然会受到操作系统的影响。就像我在本章开始时提到的,有时候Node能很好地处理这些操作系统相关的差异,有时候则需要借助于第三方模块。

通过 OS 这个核心模块你可以访问操作系统的相关信息。它是帮助我们创建具有跨平台功能的应用程序的有用工具之一。它还能提供当前环境资源的使用情况和能力信息。

访问之前,首先要用 require 来加载 OS 模块:

var os = require('os');

OS 模块的功能仅限于提供信息。比如,如果希望某些功能可跨平台运行,那可以看看系统是否支持行末字符,或者看看系统是大端(big-endian,BE)还是小端(little-endian,LE),以及获取临时目录或home目录的路径:

var os = require('os');
console.log('Using end of line' + os.EOL + 'to insert a new line');
console.log(os.endianness());
console.log(os.tmpdir());
console.log(os.homedir());

Ubuntu系统和Windows 10计算机都是小端系统,EOL字符在这两个系统中都能很好地工作(后半部分打印的日志会另起一行)。唯一不同的是临时目录和home目录不一致,不过也在意料之中。

**临时目录** 临时目录是文件被临时存储的地方。在系统重启或中断时,目录里的内容会被删除。

操作系统模块也提供了一种检测当前机器中资源是否可用的方式:

console.log(os.freemem());
console.log(os.loadavg());
console.log(os.totalmem());

os.loadavg() 函数是UNIX特有的,在Windows中它只会返回0。这是1分钟、5分和15分钟的负载平均值,它反映了系统的活动。把3个数分别乘以100%,就能得到百分比。内存函数 os.freemen()os.totalmem() 会返回内存的字节数。

另一个函数 os.cpus() 会返回关于机器CPU的信息。它返回CPU在 usernicesysidleirq 上面花费的毫秒数。可能有读者不熟悉这个概念,这里简要介绍一下, user 是CPU花在用户进程上的总时间; idle 反映了CPU的空闲时间; sys 是CPU花在系统进程(内核)上的时间; nice 值反映的是用户空间进程的优先级被修正的程度,目的是为了改变进程的运行频率; irq 是硬件级别的服务中断请求。

CPU的总时间信息不如百分比有用。我们可以通过对所有值加和,来获取每个数字所占的百分比。我们还可以用第三方模块提供的功能来获取百分比,以及其他信息。微软提供了一个很不错的文档,该文档讲解了如何在Azure上使用这个功能,文档中列出的信息和模块应该能在所有环境中工作。