mdbctl setprop 命令介绍
更新时间:2025/10/15
在Gitcode上查看源码

mdbctl setprop 命令介绍

命令介绍

setprop <operation type> <object name> <interface name> <property name>

参数说明:

  • operation type:必选参数,提供set/unset两种模式,代表设置属性值与解除设置
  • object name:必选参数,为指定属性接口所属的对象,可以通过lsobj查询组件有哪些对象
  • interface name:必选参数,为指定属性所挂的接口,可以通过lsprop查询对象下挂了哪些接口
  • property name:必选参数,为指定属性,可以通过lsprop查询对象下的属性

可以参考traceprop介绍中的流程获取组件下的接口与属性。

使用示例

示例1:设置和解除属性值

shell
# 当前属性值为54
% lsprop SOC_00
bmc.kepler.Managers.SOC
  Temperature=54

# 设置属性值成功回显Success
% setprop set SOC_00 bmc.kepler.Managers.SOC Temperature 110
Success

# 属性值为110
% lsprop SOC_00
bmc.kepler.Managers.SOC
  Temperature=110

# 解除override值
% setprop unset SOC_00 bmc.kepler.Managers.SOC Temperature
Success

# 属性值后台变更为50,解除后即为50并发送属性变更信号
% lsprop SOC_00
bmc.kepler.Managers.SOC
  Temperature=50

示例2:操作日志记录

shell
# 操作会记录对应操作日志
~ # cat /var/log/operation.log
2025-01-22 15:26:11 mdbctl,root@127.0.0.1,mdbctl,setprop set SOC_00 bmc.kepler.Managers.SOC Temperature 110 successfully
2025-01-22 15:26:24 mdbctl,root@127.0.0.1,mdbctl,setprop unset SOC_00 bmc.kepler.Managers.SOC Temperature successfully

注意事项

  1. setprop设置override值不会触发持久化和写硬件

    setprop设置属性变更会触发持久化流程,但持久化App添加了忽略override值的逻辑,因此override值不会被持久化。同理硬件代理覆写场景也忽略override值,不会触发写硬件。

  2. setprop以override模式设置对象属性值,Override值会常驻对外呈现

    • 设置时如果与原始值不同,会触发属性变更
    • 设置override值后属性的原值会保持后台业务变更逻辑,但不会触发属性变更信号,setprop unset解除override值时,会恢复为原值,当前值与override值不同时会触发属性变更信号