dxOs
1. 概述
此模块是 dejaOS 官方系统模块库的一部分,提供与底层操作系统和硬件交互的基本功能。它被设计为系统级信息和控制的主要接口。
它包含一系列核心功能:
- 系统信息:访问运行时间、总/可用内存、总/可用磁盘空间、CPU ID、设备 UUID 和序列号。
- Shell 命令:执行 shell 命令,支持阻塞/非阻塞执行和捕获输出。
- 设备管理:控制设备状态,包括设置操作模式和重启。
- 同步:用于协调异步操作的简单机制(
dxOs.sync)。
2. 文件
dxOs.jslibvbar-m-dxos.so
- 确保这 2 个文件包含在您项目根目录下的 dxmodules 子目录中。
3. 依赖项
dxMap.js(由dxOs.sync功能使用)
4. 兼容设备
兼容所有运行 dejaOS v2.0+ 的设备。
5. 使用方法
基本用法
import dxOs from "./dxmodules/dxOs.js";
import log from "./dxmodules/dxLogger.js";
// 1. 获取系统信息
const uptime = dxOs.getUptime();
log.info("系统运行时间 (秒):", uptime);
const cpuId = dxOs.getCpuid();
log.info("CPU ID:", cpuId);
// 2. 执行 shell 命令
const result = dxOs.systemWithRes("ls -l /", 256);
log.info('"ls -l /" 的结果:', result);
// 3. 获取当前设备模式
const currentMode = dxOs.getMode();
log.info("当前设备模式:", currentMode); // 例如:"prod"、"dev" 或 null
6. API 参考
dxOs.getUptime()
获取系统启动的运行时间。
- 返回值:
number- 运行时间(秒)。
dxOs.getTotalmem()
获取系统的总内存。
- 返回值:
number- 总内存(字节)。
dxOs.getFreemem()
检索系统的剩余内存。
- 返回值:
number- 剩余内存(字节)。
dxOs.getTotaldisk(path)
获取分区的总磁盘空间。
- 参数:
path(string): 磁盘分区名称(例如,"/")。(可选,默认为"/")
- 返回值:
number- 总磁盘空间(字节)。
dxOs.getFreedisk(path)
检索分区的剩余可用磁盘空间。
- 参数:
path(string): 磁盘分区名称(例如,"/")。(可选,默认为"/")
- 返回值:
number- 可用磁盘空间(字节)。
dxOs.getCpuid()
获取 CPU ID。
- 返回值:
string- CPU ID。
dxOs.getUuid()
获取设备的唯一标识符(UUID)。
- 返回值:
string- 设备 UUID。
dxOs.getSn()
获取设备的序列号(SN)。它首先尝试从 SN 文件读取;如果失败,则回退到设备 UUID。
- 返回值:
string- 设备的序列号。
dxOs.getUuid2mac()
获取从 UUID 计算出的 MAC 地址。
- 返回值:
string- 格式为b2:a1:63:3f:99:b6的 MAC 地址。
dxOs.getFreecpu()
获取当前 CPU 使用率。
- 返回值:
number- 不大于 100 的数字。
dxOs.system(cmd)
执行 shell 命令而不将结果打印到终端。
- 参数:
cmd(string): 要执行的命令。(必需)
- 返回值:
number- 命令的退出代码。
dxOs.systemBrief(cmd)
执行 shell 命令并将结果打印到终端。
- 参数:
cmd(string): 要执行的命令。(必需)
- 返回值:
number- 命令的退出代码。
dxOs.systemWithRes(cmd, resLen)
执行 shell 命令并将结果作为字符串返回。
- 参数:
cmd(string): 要执行的命令。(必需)resLen(number): 要接收的结果的最大长度。(必需)
- 返回值:
string- 命令的 stdout 结果。
dxOs.systemBlocked(cmd)
执行 shell 命令并等待其完成(阻塞)。
- 参数:
cmd(string): 要执行的命令。(必需)
- 返回值:
number- 命令的退出代码。
dxOs.asyncReboot(delay_s)
延迟后异步重启设备。
- 参数:
delay_s(number): 重启前的延迟(秒)。(必需)
- 返回值:
number- 操作的结果。
dxOs.setMode(mode)
切换设备的操作模式。切换后设备将重启。如果设备已经在目标模式中,它将不执行任何操作并返回 true。
- 参数:
mode(string): 目标模式。必须是"dev"、"test"、"prod"、"safe"之一。(必需)
- 返回值:
boolean- 如果模式切换已启动或设备已在目标模式中则为true,否则为false。
dxOs.getMode()
查询当前设备模式。
- 返回值:
string | nullstring: 当前模式名称(例如,"dev"、"prod")。null: 如果未找到模式文件或为空。
Sync 命名空间(dxOs.sync)
提供应用程序异步部分之间类似同步通信的简单机制。
sync.request(topic, timeout)
等待特定主题的响应。
- 参数:
topic(string): 要等待的主题。(必需)timeout(number): 超时时间(毫秒)。(必需)
- 返回值:
*- 在主题上接收的数据,如果超时则为undefined。
sync.response(topic, data)
向特定主题发送响应。
- 参数:
topic(string): 要响应的主题。(必需)data(*): 要发送的数据。(必需)
7. 相关模块
- dxCommon: 已弃用。被 dxOs 和 dxCommonUtils 替代。