QNX 进程保活方案
2023-08-30 本文已影响0人
巴菲伟
一、读取ham-monitor.conf配置文件进行保活
1、读取配置文件流程
ham-monitor.conf会被system_monitor读取,system_monitor会感知到哪些模块需要被HAM监听,然后system_monitor会根据该配置表格里面的进程名字信息向ham进程里面注册。
2、ham-monitor.conf 配置文件解析
https://www.jianshu.com/writer#/notebooks/34147528/notes/114647667
二、通过slm命令去实现
1、常用qnx基本命令的介绍
- pidin : 显示进程
pidin arg(arguments) : 会把启动进程时参数一并显示出来
pidin fam(family) : 会把启动进程路径一并显示出来
pidin flags : 会把启动进程标志位一并显示出来
pidin pmem : 会把启动进程占用QNX空间大小一并显示出来(可以作为未来优化方向)
- slay : 杀死进程
slay + 进程名字 slay carservice(杀死carservice进程)、slay pipe (杀死pipe进程)
- slog2info : 查看QNX系统日志
slog2info -c : 清除日志
slog2info -w : 实时打印qnx日志信息
- slm : 系统启动和监控
slm -vvvvv -b 5 -R 15/min -t 500 + xml文件位置
2、命令使用手册
https://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.qnxsdp.nav/topic/bookset.html
3、slm保活pipe进程方式
- 命令执行:在qnx环境下执行slm -vvvvv -b 5 -R 15/min -t 500 /ifs/etc/system/slm/config/slm.xml & 命令
- 代码执行:在slm.c文件下配置-vvvvv -b 5 -R 15/min -t 500参数即可
#include "IFS_Base.h"
static const char* slm_arg [] = {
"slm",
"-vvvvv",
"-r",
"-b",
"5",
"-R",
"15/min",
"-t",
"500",
combpath(ifs_base, /etc/system/slm/config/slm.xml),
NULL,
};
static const struct aaction slm = {
.type = TYPE_CMD,
.c = {
.flags = FLAG_BACKGROUND,
.path = "slm",
.arg = slm_arg,
.secpol_type = "slm_t",
.rmasks = 0xFF,
.uid = SLM_UID,
.gid = SLM_GID,
},
};
4、自定保活系统
- 采用命令代码、配置文件去实现均可