openWrt入门(2) - ubus
创始人
2024-09-26 16:19:53
0

ubus - 帮助输出

ubus list  - 列表

要了解当前总线上正在运行哪些服务,只需使用以下  ubus list  命令即可。这将显示向 RPC 服务器注册的所有命名空间的完整列表:

列表显示如下:

指定服务路径来筛选列表

-v选项

要找出特定服务提供哪些过程/方法及其参数签名,请添加除命名空间路径之外的附加 -v 选项

 debug - Fail to connect ubus


先查找进程号

先 

ps -auxfw | grep ubus

找到ubus 的进程号

再杀掉进程


kill 进程号  ,杀掉进程
(kill 普通杀,发送请求让进程自杀, kil -9 强杀,不发生请求,直接把进程强制杀死)


杀掉进程后再重启:


/etc/init.d/rpcd restart

ubus call

参数必须是有效的 JSON 字符串,并根据函数签名设置键和值:

ubus listen 

ubus send 

通过 HTTP 访问 ubus

列出所有活动会话

请尝试 

ubus call session list

解析json文件获取wan 的地址:

其中json 文件通过ubus 指令获取:

ubus call network.interface.wan status

-- 加载 cjson 模块,用于 JSON 数据的编码和解码 local cjson = require("cjson")  -- 检查 cjson 模块是否成功加载 if not cjson then     -- 如果模块加载失败,打印错误信息并终止执行     error("Failed to load cjson module") end  -- 定义一个字符串,包含要执行的 ubus 命令 -- 这个命令用于获取 wan 接口的状态信息 local command = "ubus call network.interface.wan status"  -- 使用 io.popen 执行 ubus 命令,并捕获输出 -- "r" 模式表示以只读方式打开 local handle = io.popen(command, "r")  -- 从命令输出中读取所有数据 local status_json = handle:read("*a")  -- 关闭打开的命令执行句柄 handle:close()  -- 使用 cjson.decode 函数解析 JSON 格式的字符串 -- 将解析后的 Lua 表赋值给变量 status local status = cjson.decode(status_json)  -- 检查 JSON 解析是否成功 if status then     -- 检查解析后的表中是否存在 "ipv4-address" 字段     -- 并且该字段是一个数组且长度大于 0     if status["ipv4-address"] and #status["ipv4-address"] > 0 then         -- 提取第一个 ipv4 地址对象的 address 和 mask 字段         local address = status["ipv4-address"][1].address         local mask = status["ipv4-address"][1].mask                  -- 打印 WAN 接口的 IPv4 地址和子网掩码         print("WAN IPv4 Address: " .. address .. " with subnet mask /" .. mask)     else         -- 如果 "ipv4-address" 字段不存在或数组为空,打印提示信息         print("WAN interface does not have an IPv4 address")     end else     -- 如果 JSON 解析失败,打印错误信息     print("Failed to decode JSON response from ubus") end

 namespace 传统解析json

-- load  moudle require "ubus"  local con = ubus.connect() if not con then     error("Failed to connect to ubus") end  -- Iterate all namespace and procedures local namespace = con:objects() for i, n in ipairs(namespace) do     print("namespace= " .. n) -- ubus list 里面的东西,也即uci那些常用命名空间     local signatures = con:signatures(n)     for p, s in pairs(signatures) do         print("\tprocedures = " .. p)         for k, v in pairs(s) do             print("\t\tattribute= " .. k .. " type =" .. v)         end     end end  -- call a  procedure  -- 假设 conn 是已经建立的 ubus 连接 local status = con:call("network.interface.wan", "status", {})  -- 检查 status 是否为 nil 或者空表 if status and status["ipv4-address"] and #status["ipv4-address"] > 0 then     -- 尝试访问第一个 ipv4 地址的信息     local address_info = status["ipv4-address"][1]     if address_info and address_info.address and address_info.mask then         -- 如果 address 和 mask 都存在,打印它们         print(address_info.address .. " " .. address_info.mask)     else         print("Invalid or missing address or mask information")     end else     print("Failed to retrieve WAN interface status or no ipv4-address information available") end    --[[  print(" ================================================================ ") local status = con:call("network.interface.wan","status",{name = "ipv4-address"}) for k,v in pairs(status) do     print("wan value" .. v) end      ]]--   -- close connection con:close() 

进程状态总结: 

在 Linux 系统中,查看进程状态时可能会看到 `S` 或 `S+` 这样的状态。这些状态代表了进程的特定睡眠模式,具体含义如下:

1. S (sleeping):
   - 进程正在睡眠状态,等待某个事件或资源。这是正常的系统行为,例如等待I/O操作完成或等待信号。

2. S+ (interruptible sleep with optional stops):
   - 进程处于可中断的睡眠状态,并且可以响应终端产生的停止信号。这意味着进程正在等待某些条件的发生,但如果收到特定的信号(如停止信号),它可以被中断。

3. D (uninterruptible sleep):
   - 进程处于不可中断的睡眠状态,通常是在等待 I/O 操作完成。在这种状态下,进程不会响应大多数信号,直到它所等待的 I/O 完成。

4. T (stopped):
   - 进程已被停止,通常是因为收到 `SIGSTOP` 信号。在这种状态下,进程不会执行任何操作,直到收到 `SIGCONT` 信号。

5. Z (zombie)
   - 这是“僵尸”进程,已经完成执行但尚未被父进程回收。僵尸进程仍然存在于系统中,以便父进程可以读取它的退出状态。

6. X (dead):
   - 进程已经终止,这是进程生命周期的最终状态。

在使用 `ps` 命令查看进程状态时,进程的状态列会显示上述某个字母,以表明进程的当前状态。例如:

ps aux | grep
 

输出中可能会看到类似 `S` 或 `S+` 的状态,表示进程正在睡眠。

请注意,进程状态是动态变化的,随着进程的执行和系统事件的发生,进程的状态会相应地改变。
 

相关内容

热门资讯

安卓系统软件冻结,安卓系统软件... 手机突然卡住了,是不是安卓系统软件又冻结了?别急,让我带你一探究竟,揭开这个让人头疼的小麻烦的神秘面...
安卓系统屏幕驱动文件,核心技术... 你有没有遇到过安卓手机屏幕突然变得花花的,或者黑黑的,简直让人抓狂?别急,今天就来给你揭秘安卓系统屏...
王者荣耀安卓充值系统,畅享游戏... 你有没有发现,最近玩王者荣耀的时候,充值系统好像有点不一样了呢?没错,就是那个让你心动的安卓充值系统...
鸿蒙硬刚安卓系统,开启国产操作... 你知道吗?最近科技圈可是炸开了锅,因为华为的鸿蒙系统硬刚安卓系统,这俩“大佬”之间的较量可谓是火花四...
什么版本支持安卓系统,探索支持... 你有没有想过,你的手机里那些可爱的应用程序,它们到底是在哪个版本的安卓系统上才能畅快运行呢?别急,今...
樱花直播安卓系统下载,畅享精彩... 你有没有发现,最近手机上多了一个超级有趣的新玩意儿——樱花直播!这款直播软件可是火得一塌糊涂,不仅年...
安卓换苹果系统应用,系统转换应... 你有没有想过,从安卓换到苹果系统,是不是就像换了个新世界的大门呢?想象那些熟悉的安卓应用,突然间变成...
安卓怎么自己重做系统,自行重做... 手机用久了是不是感觉卡得要命,想给它来个大变身?别急,今天就来教你怎么给安卓手机自己重做系统,让它焕...
安卓系统布局文件在哪,Andr... 你有没有想过,当你打开安卓手机,那些漂亮的界面、功能丰富的应用,它们是怎么排列组合的呢?没错,这就是...
车机 安卓系统更新,功能升级... 你有没有发现,最近你的车机系统好像变得不一样了?没错,就是那个一直默默陪伴你的安卓系统,它又来了一次...
安卓系统应用申请权限,揭秘隐私... 你有没有发现,每次下载一个新应用,它总是要你给它开各种各样的权限?是不是觉得有点烦?别急,今天就来给...
联想手表watchx安卓系统,... 你有没有注意到,最近手腕上的小玩意儿越来越高级了?没错,说的就是那些集时尚与科技于一身的手表。今天,...
五路监控安卓系统,智能安防新篇... 你知道吗?现在科技的发展真是让人惊叹不已!今天,我就要给你揭秘一个超级实用的安卓系统——五路监控安卓...
cfm安卓系统玩ios,CFM... 你有没有想过,在安卓系统上玩iOS游戏,是不是就像在沙滩上捡到一颗珍珠那么惊喜呢?没错,今天就要来聊...
安卓原生版系统下载,下载与体验... 你有没有想过,为什么你的手机总是那么卡,那么慢?是不是觉得安卓系统太复杂,想要换一个更简洁、更流畅的...
安卓系统里最好的,探索最佳性能... 你有没有想过,在安卓系统里,哪款手机才是真正的好伙伴呢?想象每天陪伴你左右,帮你处理各种事务,是不是...
如何从安卓系统进入pe系统,安... 亲爱的读者,你是否曾好奇过如何在安卓系统上轻松进入PE系统呢?想象你手中的安卓设备瞬间变成了一个功能...
安卓3.0系统刷4.0,系统进... 你有没有想过,你的安卓手机从3.0系统升级到4.0系统,就像给它换了个新灵魂呢?没错,今天就要来聊聊...
exe怎么转换安卓系统,跨平台... 你有没有想过,把电脑上的exe文件直接搬到手机上用呢?想象在手机上就能轻松打开那些在电脑上才能用的软...
安卓可以刷双系统,体验双重魅力 你有没有想过,你的安卓手机可以变成一个双面神呢?没错,就是那种可以同时运行两个操作系统的神奇存在!今...