8295平台定时抓取温度、hogs和top等日志脚本

一、简介

本脚本是开启定时记录温度、hogs和top等日志的脚本,用于特定问题的调试,默认不会开启。

本脚本可以定时把记录到的信息打印到文本和终端,hogs不会打印到终端。

下面保存成一个diff, 代码应用到工程 qcom/es17/QNX:

diff --git a/apps/qnx_ap/AMSS/platform/utilities/scripts/record_sysinfo.sh b/apps/qnx_ap/AMSS/platform/utilities/scripts/record_sysinfo.sh
new file mode 100755
index 0000000..169168f
--- /dev/null
+++ b/apps/qnx_ap/AMSS/platform/utilities/scripts/record_sysinfo.sh
@@ -0,0 +1,120 @@
+#! /bin/sh
+TAG=record_sysinfo.sh
+
+## User set: enable/disable record type(1 enable, 0 disable)
+RECORD_THERMAL=1
+RECORD_HOGS=1
+RECORD_TOP=0
+## User set: record interval time(unit seconds)
+SLEEP_TIME_SEC=30
+
+
+LOG_HOME=/usr/nfs_share/qlog/record_sysinfo/
+SYSINFO_LOGPATH=${LOG_HOME}sysinfo.log
+TIME_FMT="+%m-%d %H:%M:%S"
+SYSINFO_LOG_COUNT_FILE=${LOG_HOME}test_count
+
+
+echo_msg()
+{
+    echo "$TAG `date "+%m-%d %H:%M:%S"`: $@";
+}
+
+print_msg()
+{
+    echo "$TAG `date "+%m-%d %H:%M:%S"`: $@" >> $SYSINFO_LOGPATH;
+}
+
+
+RCNT_THERMAL=0
+THERMAL_INFO_SYSFS_FILE="/dev/thermalmgr"
+do_record_thermal()
+{
+    let RCNT_THERMAL++
+    print_msg "--------record NO.$RCNT_THERMAL thermal info start----------"
+    cat ${THERMAL_INFO_SYSFS_FILE} 2>&1 >> $SYSINFO_LOGPATH
+    print_msg "--------record NO.$RCNT_THERMAL thermal info end----------\n\n\n"
+}
+
+RCNT_HOGS=0
+do_record_hogs()
+{
+    let RCNT_HOGS++
+    print_msg "--------record NO.$RCNT_HOGS hogs info start----------"
+    hogs -Sc -i1 2>&1 >> $SYSINFO_LOGPATH
+    print_msg "--------record NO.$RCNT_HOGS hogs info end----------\n\n\n"
+}
+
+RCNT_TOP=0
+do_record_top()
+{
+    let RCNT_TOP++
+    print_msg "--------record NO.$RCNT_TOP top info start----------"
+    top -b -i1 2>&1 >> $SYSINFO_LOGPATH
+    print_msg "--------record NO.$RCNT_TOP top info end----------\n\n\n"
+}
+
+
+do_record_sysinfos()
+{
+    mkdir -p $LOG_HOME
+
+    ## manage test_count
+    if [ -f $SYSINFO_LOG_COUNT_FILE ]; then
+        SYSINFO_LOG_COUNT=$(cat $SYSINFO_LOG_COUNT_FILE)
+    else
+        SYSINFO_LOG_COUNT=0
+    fi
+    let NEW_SYSINFO_LOG_COUNT=SYSINFO_LOG_COUNT+1
+    echo ${NEW_SYSINFO_LOG_COUNT} > $SYSINFO_LOG_COUNT_FILE
+
+    ## rename last log
+    LAST_SYSINFO_LOGPATH="${LOG_HOME}sysinfo_${SYSINFO_LOG_COUNT}_`date "+%m-%d_%H%M%S"`.log"
+    if [ -f "$SYSINFO_LOGPATH" ]; then
+        mv $SYSINFO_LOGPATH $LAST_SYSINFO_LOGPATH
+        echo_msg "do mv $SYSINFO_LOGPATH $LAST_SYSINFO_LOGPATH"
+        print_msg "do mv $SYSINFO_LOGPATH $LAST_SYSINFO_LOGPATH"
+        print_msg "rename last log $LAST_SYSINFO_LOGPATH"
+    fi
+
+    ## print version and enable types
+    print_msg "record_sysinfo version: 0.1 20230504"
+    ENABLED_RECORD_TYPE_STR=""
+    if [ "${RECORD_THERMAL}" == "1" ]; then
+        ENABLED_RECORD_TYPE_STR="${ENABLED_RECORD_TYPE_STR}thermal "
+    fi
+    if [ "${RECORD_HOGS}" == "1" ]; then
+        ENABLED_RECORD_TYPE_STR="${ENABLED_RECORD_TYPE_STR}hogs "
+    fi
+    if [ "${RECORD_TOP}" == "1" ]; then
+        ENABLED_RECORD_TYPE_STR="${ENABLED_RECORD_TYPE_STR}top "
+    fi
+    echo_msg "start NO.${NEW_SYSINFO_LOG_COUNT} times sysinfo record, will record such sysinfos log type: ${ENABLED_RECORD_TYPE_STR}"
+    print_msg "start NO.${NEW_SYSINFO_LOG_COUNT} times sysinfo record, will record such sysinfos log type: ${ENABLED_RECORD_TYPE_STR}"
+
+    print_msg "--------------------------------------------------------------------------------"
+
+    ## do record
+    while [ true ]; do
+        if [ -e /tmp/record_sysinfo_stop -o -e /bin/record_sysinfo_stop ]; then
+            echo_msg "user stop record sysinfo"
+            print_msg "user stop record sysinfo"
+            return
+        fi
+
+        if [ "${RECORD_THERMAL}" == "1" ]; then
+            do_record_thermal
+        fi
+        if [ "${RECORD_HOGS}" == "1" ]; then
+            do_record_hogs
+        fi
+        if [ "${RECORD_TOP}" == "1" ]; then
+            do_record_top
+        fi
+
+        sleep $SLEEP_TIME_SEC
+    done
+}
+
+
+do_record_sysinfos
diff --git a/apps/qnx_ap/target/filesets/qc.scripts.build b/apps/qnx_ap/target/filesets/qc.scripts.build
index c6ace55..74d7e43 100755
--- a/apps/qnx_ap/target/filesets/qc.scripts.build
+++ b/apps/qnx_ap/target/filesets/qc.scripts.build
@@ -15,4 +15,5 @@#ifdef TARGET_BUILD_VARIANT_user#else[perms=0700]scripts/hut_test.sh=aarch64le/bin/hut_test.sh
-#endif
\ No newline at end of file
+#endif
+[perms=0700]scripts/record_sysinfo.sh=aarch64le/bin/record_sysinfo.sh
diff --git a/apps/qnx_ap/target/hypervisor/host/startup.qvmhost.tmpl b/apps/qnx_ap/target/hypervisor/host/startup.qvmhost.tmpl
index f52c811..81ba06d 100755
--- a/apps/qnx_ap/target/hypervisor/host/startup.qvmhost.tmpl
+++ b/apps/qnx_ap/target/hypervisor/host/startup.qvmhost.tmpl
@@ -529,6 +529,15 @@fifi+## record sysinfo for debug
+if [ -e /bin/record_sysinfo ]; then
+    if [ -e /scripts/record_sysinfo.sh ]; then
+        echo "start run record_sysinfo script."
+        . /scripts/record_sysinfo.sh &
+    else
+        echo "record_sysinfo no script."
+    fi
+fi

二、配置

默认开启了抓取 温度和hogs的信息,打开/scripts/record_sysinfo.sh文件(V4项目路径是/mnt/scripts/record_sysinfo.sh)可以修改配置。

先对目录改为可写权限挂载:

mount -uw /mnt

打开文件(vi /scripts/record_sysinfo.sh),找到“## User set”这块代码修改:

## User set: enable/disable record type(1 enable, 0 disable)
RECORD_HOGS=0          ##这里修改为1,启动记录hogs命令的日志
RECORD_TOP=1             ##这里修改为1,启动记录top命令的日志RECORD_CLOCK=1         ##这里修改为1,启动记录clock.sh info|grep apcs命令的日志RECORD_THERMAL=1   ##这里修改为1,启动记录温度的日志## User set: record interval time(unit seconds)
SLEEP_TIME_SEC=5      ##这里修改打印间隔时间,单位秒

三、开启日志记录

1. 单次执行

/scripts/record_sysinfo.sh

2. 参数

-n 收集的内容不打印到终端

<循环任务秒数> 每次收集任务完成后,间隔多久开始下一次收集任务

例子:# 收集的内容不打印到终端,每隔5秒收集一次

/scripts/record_sysinfo.sh -n 5 

3. 每次重启都自动开启执行

在目录可写的前提下,touch文件/bin/record_sysinfo开启记录日志标记:

touch /mnt/bin/record_sysinfosync; reset; ## 重启系统

停止日志记录:

临时停止本次日志记录: 


touch /tmp/record_sysinfo_stop

停止日志记录:

rm /mnt/bin/record_sysinfo

 

四、日志文件收集

日志将保存在此处:

/usr/nfs_share/qlog/record_sysinfo/sysinfoxxxx.log

当次开机的日志名字是:

/usr/nfs_share/qlog/record_sysinfo/sysinfo.log

每次脚本启动都把上次log改名:sysinfo测试次数时间.log

五、日志保存参考:

record_sysinfo.sh 01-01 00:00:52: --------record NO.1 thermal info start----------
XO_THERM 80000
SYS_THERM2 83000
SYS_THERM1 93000
PMIC_THERM4 83245
。。。
tsens_tz_sensor3 109900
tsens_tz_sensor2 109200
tsens_tz_sensor1 110300
tsens_tz_sensor0 106500
record_sysinfo.sh 01-01 00:00:52: --------record NO.1 thermal info end----------record_sysinfo.sh 01-01 00:00:53: --------record NO.1 hogs info start----------
PID NAME MSEC PIDS SYS MEMORY
12306 slm 1 0% 0% 228k 0%
839764 name_server 1 0% 0% 480k 0%。。。
6 [idle] 5 0% 0% 0k 0%
7 [idle] 1 0% 0% 0k 0%record_sysinfo.sh 01-01 00:00:56: --------record NO.1 hogs info end----------record_sysinfo.sh 01-01 00:01:26: --------record NO.2 thermal info start----------
XO_THERM 80000
SYS_THERM2 83000
SYS_THERM1 93000

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.04 使用scrapy-splash爬取动态网页

我们要先安装splash服务&#xff0c;使用dock安装&#xff0c;如果dock没有安装&#xff0c;请参考我的上一篇博文&#xff1a; 按照官方文档&#xff1a;https://splash.readthedocs.io/en/stable/install.html 1.下载splash sudo docker pull scrapinghub/splash2.安装scrapy…

软考 系统架构设计师系列知识点之杂项集萃(37)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;36&#xff09; 第60题 用例&#xff08;use case&#xff09;用来描述系统对事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系统”中&#xff0c;创建新订单和更新订…

ffmpeg解封装rtsp并录制视频-(1)解封装rtsp断网或摄像机重启后自动重连处理

头文件&#xff1a; xtools.h #pragma once #include <thread> #include <iostream> #include <mutex> //日志级别 DEBUG INFO ERROR FATAL enum XLogLevel {XLOG_TYPE_DEBUG,XLOG_TYPE_INFO,XLOG_TPYE_ERROR,XLOG_TYPE_FATAL }; #define LOG_MIN_LEVEL XLO…

dp练习题

先来一个简单dp练习 class Solution { public:int rob(vector<int>& nums) {int n nums.size();vector<int> a(n 1);int ans nums[0]; a[0] nums[0];if (n 1) return ans;a[1] max(nums[0], nums[1]);ans max(ans, a[1]);if (n 2) return ans;for (i…

洛谷-P7071 [CSP-J2020] 优秀的拆分

[CSP-J2020] 优秀的拆分 题目描述 一般来说&#xff0c;一个正整数可以拆分成若干个正整数的和。 例如&#xff0c; 1 1 11 11&#xff0c; 10 1 2 3 4 101234 101234 等。对于正整数 n n n 的一种特定拆分&#xff0c;我们称它为“优秀的”&#xff0c;当且仅当在这种…

工厂方法模式和抽象工厂

工厂方法模式的核心思想就是为每种产品定义一个创建工厂方法的工厂类&#xff0c;核心就是面向接口编程 成员包含&#xff1a; &#xff08;1&#xff09;产品接口&#xff0c;工厂接口 &#xff08;2&#xff09;产品实现类&#xff0c;工厂实现类 产品接口和具体产品类 // …

xss+csrf项目实例

项目背景&#xff1a; 如下&#xff1a;我们是在一个类似文章管理系统的网站上面发现的该漏洞。我们将其运行在本地的phpstudy集成环境上面。 源码地址下载链接&#xff1a;https://pan.baidu.com/s/1MpnSAq7a_oOcGh4XgPE-2w 提取码&#xff1a;4444 考察内容&#xff1a; …

分布式锁的几种形式以及优缺点

在分布式系统中,分布式锁是一种用于控制对共享资源访问的机制,以确保多进程、多线程环境下的数据一致性。分布式锁有多种实现方式,本文将介绍几种常见的分布式锁及其优缺点。 一、基于数据库的分布式锁 实现方式 表锁:使用数据库提供的锁机制,例如 MySQL 的 SELECT ... …

【JavaScript脚本宇宙】提升Markdown工作流:不可错过的六个JavaScript库

优化你的Markdown体验&#xff1a;六大JavaScript库一网打尽 前言 在现代Web开发中&#xff0c;Markdown作为一种轻量级的标记语言&#xff0c;凭借其简洁易读的语法和广泛的适用性&#xff0c;迅速成为开发者们的宠儿。为了更有效地解析和处理Markdown内容&#xff0c;JavaS…

10 C++11

10 C11 1、类型推导1.1 auto关键字1.2 auto类型推断本质 2、类型计算2.1 类型计算分类2.2 类型计算的四种规则2.3 返回值类型计算 3、列表初始化4、Lambda表达式4.1 前置知识4.2 Lambda表达式4.3 捕获表 5、右值引用5.1 概念5.2 左值引用和右值引用 6、移动语义 1、类型推导 1…

中断里用信号量而不用消息队列

在嵌入式开发中&#xff0c;中断处理程序&#xff08;ISR&#xff09;是一个非常重要的部分。ISR需要非常高效地运行&#xff0c;以确保系统能够及时响应硬件事件。使用信号量和消息队列都是常见的同步机制&#xff0c;但它们在中断上下文中的使用有不同的限制和建议。 信号量…

嵌入式复古游戏项目开发与实现

大家好,今天看到一个火柴盒项目,非常的小巧,分享给大家,感兴趣的话,可以复刻一个玩一玩。 MicroByte 是一款微型主机,能够运行 NES、GameBoy、GameBoy Color、Game Gear 和 Sega Master 系统的游戏,所有元器件都设计在这 78 x 17 x 40 mm 的封装中。尽管成品尺寸很小,但…

AI预测体彩排3采取888=3策略+和值012路或胆码测试6月16日升级新模型预测第1弹

根据前面的预测效果&#xff0c;我对模型进行了重新优化&#xff0c;因为前面的模型效果不是很好。熟悉我的彩友比较清楚&#xff0c;我之前的主要精力是对福彩3D进行各种模型的开发和预测&#xff0c;排三的预测也就是最近1个月才开始搞的。3D的预测&#xff0c;经过对模型的多…

Java面向对象-接口

Java面向对象-接口 一、JDK1.8之前二、接口的作用三、JDK1.8之后&#xff0c;新增非抽象方法四、静态方法 一、JDK1.8之前 1、类是类&#xff0c;接口是接口&#xff0c;它们是同一层次的概念 2、接口中没有构造器 3、接口如何声明&#xff1a;interface 4、在jdk1.8之前&…

002 IOC和DI使用

文章目录 基于XML的使用IOC配置第三种:实例工厂(了解)DI配置构造函数注入set方法注入(重点)使用p名称空间注入数据依赖注入不同类型的属性 基于注解和XML混合方式的使用IoC注解使用方法IoC注解(创建对象)DI注解(依赖注入)关于注解和XML的选择问题 基于纯注解方式使用注解和XML混…

【字符串函数】

1.strlen的使⽤和模拟实现 size_t strlen ( const char * str ); 1.字符串以 \0 作为结束标志&#xff0c;strlen函数返回的是在字符串中 \0 前⾯出现的字符个数&#xff08;不包 含 \0 )。 2.参数指向的字符串必须要以 \0 结束。 3.注意函数的返回值为size_t&#xff0c;是⽆…

代码随想录算法训练营刷题复习3:动态规划——子序列问题

子序列问题 包含四个子问题&#xff1a;子序列&#xff08;不连续&#xff09;、子序列&#xff08;连续&#xff09;、编辑距离、回文 子序列&#xff08;不连续&#xff09; 300.最长递增子序列 定义dp数组&#xff0c;问什么dp的定义就设什么&#xff0c; 更新dp[i]的值&…

力扣148. 排序链表

给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5] 示例 3&…

23 华三(自动获取的IP地址)

华三交换机 DHCP 配置 #version 7.1.070, Alpha 7170 //设备的版本信息 #sysname sw1 //修改设备的名字 #irf mac-address persistent timerirf auto-update enableundo irf link-delayirf member 1 priority 1#dhcp enable //开启DHCP 服务dhcp server forbidden-ip 192.168.…

.net 调用海康SDK的常用操作封装

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;新的征程&#xff0c;我们面对的不仅…