获取系统相关信息

使用 os 模块可以获取与操作系统相关的信息,如主机名、系统名、系统 CPU 架构等,其用到的方法如表8.2所示。

image 2024 04 13 20 02 14 565
Figure 1. 表8.2 os 模块中与获取操作系统信息相关的方法

下面对表 8.2 中常用方法的具体使用进行讲解。

hostname()

hostname() 方法返回操作系统的主机名。

例如,获取笔者计算机的主机名,代码如下:

const os = require("os")
console.log("当前主机名:",os.hostname())

运行结果如下:

当前主机名:DESKTOP-R4VMEL1

type()

type() 方法返回操作系统名。在 Linux 上返回 Linux;在 macOS 上返回 Darwin;在 Windows 上返回 Windows_NT

例如,获取笔者计算机的操作系统名称,代码如下:

const os = require("os")
console.log("当前操作系统为:",os.type())

运行结果如下:

当前操作系统为:Windows_NT

platform()

platform() 方法返回编译时的操作系统名,其可能的值有 aixdarwinfreebsdlinuxopenbsdsunoswin32

例如,获取笔者计算机当前操作系统编译时的操作系统名,代码如下:

const os = require("os")
console.log("当前操作系统编译时的名称为:",os.platform())

运行结果如下:

当前操作系统编译时的名称为: win32

arch()

arch() 方法返回操作系统的 CPU 架构,可能的值有 armarm64ia32mipsmipselppcppc64s390s390xx32x64

例如,获取笔者计算机当前操作系统的 CPU 架构,代码如下:

const os = require("os")
console.log("操作系统的CPU架构为:",os.arch())

运行结果如下:

操作系统的CPU架构为: x64

release()

release() 方法返回操作系统的发行版本,其值为字符串类型。

例如,获取笔者计算机操作系统的发行版本,代码如下:

const os = require("os")
console.log("当前操作系统的发行版本为:",os.release())

运行结果如下:

当前操作系统的发行版本为: 10.0.18363

version()

version() 方法返回标识操作系统内核版本的字符串。例如,获取笔者计算机操作系统的内核版本,代码如下:

const os=require("os")
console.log(os.version())

运行结果如下:

Windows 10 Education

cpus()

cpus() 方法的返回值为一个对象数组,其中包含各 CPU 内核的信息,并且每个对象包含以下属性。

  • model:字符串类型,表示 CPU 内核的型号。

  • speed:整型,以兆赫兹(MHz)为单位,表示 CPU 内核的速度。

  • times:是一个对象,其包含的属性如表 8.3 所示。

image 2024 04 13 20 10 22 540
Figure 2. 表8.3 times对象的属性

例如,查看计算机的 CPU 内核信息,代码如下:

const os = require("os")
console.log(os.cpus())

uptime()

uptime() 方法返回操作系统的运行时间,以秒为单位。

例如,获取当前操作系统的运行时间,代码如下:

const os=require("os")
const time=os.uptime()
console.log("系统的运行时间为:"+os.uptime())

运行结果如下:

系统的运行时间为:10995

【例8.2】查看计算机的运行时间。(实例位置:资源包\源码\08\02)

新建一个 js.js 文件,该文件中使用 os 模块的 uptime() 方法获取计算机的运行时间,然后将其转换为时分秒的格式,代码如下:

const os = require("os")
var alltime = os.uptime()                              //获取总秒数
var sec = alltime % 60                                 //计算秒数
var allmin = parseInt(alltime / 60)                    //计算总分钟数
var min = allmin % 60                                  //计算分钟数
var hour = parseInt(allmin / 60)                       //计算小时数
console.log("当前计算机运行了" + alltime + "秒")
console.log("转换后为:%d时%d分%d秒", hour, min, sec)

getPriority()

getPriority() 方法获取指定进程的调度优先级,其语法格式如下:

os.getPriority([pid])

其中,参数 pid 为指定进程的 PID,如果省略 pid 或者 pid0,该方法将返回当前进程的优先级。例如,查看 chrome.exe(pid 为 10904) 进程的优先级,代码如下:

const os = require("os")
console.log(os.getPriority(10904))

运行结果如下:

19

getPriority() 方法中的 pid 参数可以在自己计算机的任务管理器中查看。

setPriority()

setPriority() 方法为指定的进程设置调度优先级。具体语法格式如下:

os.setPriority([pid,]priority)

其中,pid 为进程的 PID,当省略 pid 或者 pid 为 0 时,表示当前进程;priority 为分配给该进程的调度优先级,该值的取值范围为 -20~19 的整数。

前面示例中 PID 为 10904 的进程的调度优先级为 19,下面通过 setPriority() 方法将其调度优先级调整为 10,代码如下:

const os = require("os")
os.setPriority(10904,10)

运行程序后,打开任务管理器,查看 PID 为 10904 的进程的优先级由原来的 “低” 变成了 “低于正常”,效果如图8.5和图8.6所示。

image 2024 04 13 20 20 14 010
Figure 3. 图8.5 10904进程的原优先级
image 2024 04 13 20 20 36 991
Figure 4. 图8.6 修改后的10904进程的优先级