【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
之前 blog
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(一)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(二)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(三)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(四)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(五)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六)
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(七)
分析了下 strace
的追踪日志以及里面 open 命令和 openat 命令的区别,还有里面涉及的相关宏定义,以及 D-Bus 与 GNOME 的概念,并分析了 dbus-send 命令与 D-Bus 的关系,分析了日志中不是 GNOME 和 XFCE 的描述,xprop 命令的用法,也分析了根窗口和 _DT_SAVE_MODE
的概念,还分析了另一种检测方式 xprop -root
,以及其执行失败的原因,下面继续来看下
strace 日志解析
下面看下一个执行命令
这里比较独特,只有一个单独的 grep
命令,终端输入
man grep
查看 grep
命令帮助文档,可以看到 -q
选项含义如下
从描述可以看出 -q
选项为静默模式,不输出匹配内容,只通过退出码表示是否找到,0 表示找到
后面跟着的正则匹配项 ^Enlightenment
,之前 blog 【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(六) 提过,^
表示匹配行首,$
表示匹配行尾,相当于通过 grep
命令匹配找到 Enlightenment
开头的内容
这条命令不能单独分析,需要结合前面的内容,从上篇 blog
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(七)
可以知道,前面在寻找根窗口中和 XFCE 相关的属性前,使用了 xprop -root
输出根窗口的所有属性
那么这里 grep -q ^Enlightenment
也是一样,是希望从前面 xprop -root
命令输出根窗口的所有属性中,找到和 Enlightenment
相关的属性
这里又涉及到 Enlightenment 概念,Enlightenment 也是一个轻量级的桌面环境,但其风格,目标和用户群体和 GNOME,XFCE 都不同
- GNOME:外观现代简洁,资源占用较高,目标为普通用户和企业
- XFCE:外观基本无特效,资源占用较低,适合老电脑用户
- Enlightenment:视觉华丽,很多动画,透明,3D 效果,资源占用极低,目标用户为复古玩家,嵌入式设备
在 124 行这里返回了失败(毕竟前面执行 xprop -root
都失败了,这里 grep
找不到内容也正常)
ok,分析到这儿,相当于是 GNOME,XFCE,Enlightenment 三个桌面系统都没找到,继续往下
下面出现了 uname
命令,执行成功
终端输入
man uname
可以看到 uname
命令作用为打印系统信息
直接在终端输入 uname
可以看到 uname
默认输出当前系统的内核名称:Linux,这里执行程序应该是想确认当前运行在什么操作系统上,做兼容性判断,避免在其他 Unix 系统上出错
ok,今天先到这里,下篇 blog 继续