文章目录

  • 概述
  • 参考资料
  • 交叉编译
    • 过程
    • 报错
      • 报:mk_outvec、mk_rlimit、mksysstr相关错误
  • 配置
    • 1、创建待监视进程的运行规则
      • rc.main
      • rc.log
    • 2、设置环境变量
    • 3、启动perpd服务器
    • 4、配置完成,验证结果
  • perpd
    • 作用
    • 使用
  • perpls
  • perpctl
    • perpctl d
    • perpctl u
    • perpctl o

概述

perp是一款非常优秀、资源占用低的开源的多进程管理框架,多用在嵌入式系统环境下。由于网上除了官网的资源外,其他可参考的资源较少,我在这里记录一下我之前使用的经验,并分享给大家。

perp相比与restartd,perp的功能、可监视的进程数量都更多。

资源占用:
ROM:556K (最大占用,可裁剪)

参考资料

http://b0llix.net/perp/site.cgi?page=about

交叉编译

过程

从官网下载源码包

1、tar -zxvf perp-2.07.tar.gz
2、vi conf.mk
修改CC,STRIP为交叉编译工具
修改安装路径,例如/home/ss/perp_install
3、make distclean;make ;make install

报错

报:mk_outvec、mk_rlimit、mksysstr相关错误

原因:编译出的上述工具是在编译时用到的,即在编译主机上使用,而交叉编译将它们编译成目标机架构了。
解决:修改lasagna/Makefile,用本机的GCC编译它们

outvec/mk_outvec : outvec/mk_outvec.cgcc $(CFLAGS) -o $@ outvec/mk_outvec.c....rlimit/mk_rlimit : rlimit/mk_rlimit.cgcc $(CFLAGS) -o $@ rlimit/mk_rlimit.c....sysstr/mksysstr : sysstr/mksysstr.cgcc $(CFLAGS) -o $@ sysstr/mksysstr.c

配置

make install得到了一些bin文件,如下:

ss@ss-vm:~/koal_sdk/third_part$ ls perp_install/usr/sbin/ -l
总用量 664
-rwxr-xr-x 1 ss ss 27928 11月 26 15:34 perpboot
-rwxr-xr-x 1 ss ss 26020 11月 26 15:34 perpctl
-rwxr-xr-x 1 ss ss 60500 11月 26 15:34 perpd
-rwxr-xr-x 1 ss ss 19404 11月 26 15:34 perphup
-rwxr-xr-x 1 ss ss 31924 11月 26 15:34 perpls
-rwxr-xr-x 1 ss ss 24676 11月 26 15:34 perpok
-rwxr-xr-x 1 ss ss  5273 11月 26 15:34 perp-setup
-rwxr-xr-x 1 ss ss 29620 11月 26 15:34 perpstat
-rwxr-xr-x 1 ss ss 24452 11月 26 15:34 runargs
-rwxr-xr-x 1 ss ss 19240 11月 26 15:34 runargv0
-rwxr-xr-x 1 ss ss 23748 11月 26 15:34 runchoom
-rwxr-xr-x 1 ss ss 19596 11月 26 15:34 rundetach
-rwxr-xr-x 1 ss ss 25264 11月 26 15:34 rundeux
-rwxr-xr-x 1 ss ss 29548 11月 26 15:34 runenv
-rwxr-xr-x 1 ss ss 24544 11月 26 15:34 runfile
-rwxr-xr-x 1 ss ss 30484 11月 26 15:34 runlimit
-rwxr-xr-x 1 ss ss 23036 11月 26 15:34 runlock
-rwxr-xr-x 1 ss ss 20532 11月 26 15:34 runpause
-rwxr-xr-x 1 ss ss 19324 11月 26 15:34 runsession
-rwxr-xr-x 1 ss ss 44172 11月 26 15:34 runtool
-rwxr-xr-x 1 ss ss 27024 11月 26 15:34 runtrap
-rwxr-xr-x 1 ss ss 22380 11月 26 15:34 runuid
-rwxr-xr-x 1 ss ss 14880 11月 26 15:34 sissylog
-rwxr-xr-x 1 ss ss 38508 11月 26 15:34 tinylog
-rwxr-xr-x 1 ss ss  1375 11月 26 15:34 tinylog_run

其中,常用的到只有perpctl、 perpls 、 perpd

1、创建待监视进程的运行规则

1、创建/etc/perp
2、在/etc/perp/下创建目标目录,例如:

/etc/perp
└── perp_demo├── rc.log├── rc.main

注意
1、添加粘滞位(非root用户权限上位):
chmod +t /etc/perp/perp_demo
该目录存放待监视进程的start、stop、restart及log记录等规则。
2、rc.main文件权限最好为755

rc.main

文件权限:所属用于至少需要读和执行权限。
没有执行权限,将导致启动异常。

示例:

#!/bin/sh
exec 2>&1TARGET=${1}
SVNAME=${2}## start target:
start() {echo "*** ${SVNAME}: starting perp_demo..."exec \app_demo
}## reset target:
reset() {case $3 in'exit' )echo "*** ${SVNAME}: exited status $4" ;;'signal' )echo "*** ${SVNAME}: killed on signal $5" ;;* )echo "*** ${SVNAME}: stopped ($3)" ;;esacexit 0
}## branch to target:
eval ${TARGET} "$@"### EOF

注意:执行程序要用exec,并且后面的程序不能后台自己(perp会自动后台改程序)

rc.log

示例:

#!/bin/shif test ${1} = 'start' ; thenexec tinylog_run ${2}
fiexit 0
### EOF

将记录进程的log到/var/log/进程名/current文件内。

2、设置环境变量

export PERP_BASE=/etc/perp
目的:perpls等工具,会根据env中的PERP_BASE找相应的配置文件,如果环境变量没有的话,将报:

perpls fatal: failure connecting to perpd control socket ./.control/perpd.sock: file does not exist (ENOENT)

3、启动perpd服务器

perp /etc/perp  &

4、配置完成,验证结果

一切正常的话,perpls就可以看到监视进程的运行状态了

perpd

作用

perpd是一个守护进程,用于接收,例如perpls/perpctl下发的指令,并按规则处理这些指令。

perpd运行时将扫描指定目录下的rc.log、rc.main文件,扫描到时,将切换到rc.main所在目录,并执行:

./rc.main start/stop/reset svname [ args...  ]

其中rc.log记录运行时的log,该文件可选。
rc.main包含启动、停止进程的规则,该文件必须存在。

使用

perpd /etc/perp &

上述会打印出perpd的运行log,如果想屏蔽可:

perpd /etc/perp > /dev/null 2>&1 &

只打印错误信息。

perpls

作用:显示监视的进程信息

# perpls
[+ +++ ---]  perp_demo  uptime: 58242s/-s  pids: 262/-

解释:
[+ +++ —]:运行面板,包含3部分,其后跟监视服务的名字,uptime:启动时间
面板第一部分:
+:正常启动并运行
-:该进程不被perpd监视或已停止且不被拉起
第二部分:
.:进程停止,如下所示:

# perpls
[+ +++ ---]  perp_demo  uptime: 58242s/-s  pids: 262/-
# perpctl d perp_demo
perp_demo: ok
# perpd[261]: monitoring 0 client connections
*** perp_demo: killed on signal SIGTERM# perpls
perpd[261]: monitoring 1 client connection
[+ ... ---]  perp_demo  uptime: -s/-s  pids: -/-

r: 表示进程起来后,短暂时间内会down掉,即表示进程被频繁拉起和退出,进程异常
p: 表示进程暂停
o: 标识进程只被执行一次
第三部分:
不用考虑

perpctl

作用:控制所监视的进程的状态
以下仅对常用法进行说明。

perpctl d

perpctl d 进程名:即d(down)掉进程,示例如下:

# perpls
[+ +++ ---]  perp_demo  uptime: 58242s/-s  pids: 262/-
# perpctl d perp_demo
perp_demo: ok
# perpd[261]: monitoring 0 client connections
*** perp_demo: killed on signal SIGTERM# perpls
perpd[261]: monitoring 1 client connection
[+ ... ---]  perp_demo  uptime: -s/-s  pids: -/-

perpctl u

perpctl u 进程名:即u(up)起进程,示例如下:

# perpls
perpd[261]: monitoring 1 client connection
[+ ... ---]  perp_demo  uptime: -s/-s  pids: -/-
# perpctl u perp_demo
perp_demo: ok
# *** perp_demo: starting perp_demo...
ss test# perpls
[+ +++ ---]  perp_demo  uptime: 5s/-s  pids: 286/-

perpctl o

o(once),如果进程没有起来,则拉起,并标识它只被拉起一次,之后kill掉进程,它不会被拉起。

# perpls
[+ +++ ---]  perp_demo  uptime: 5s/-s  pids: 286/-
# perpctl o perp_demo
perp_demo: ok
# perpls
[+ +o+ ---]  perp_demo  uptime: 193s/-s  pids: 286/-

从零开始perp交叉编译及配置相关推荐

  1. linux内核优盘配置,mini2440建立交叉编译环境+配置linux内核

    mini2440建立交叉编译环境+配置linux内核 来源:IT165收集  发布日期:2014-09-22 20:37:16 (mini2440)建立交叉编译环境+配置linux内核 系统ubunt ...

  2. arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置

    Linux下的arm-linux-gcc交叉编译环境安装 安装arm-linux-gcc (1) 打开终端,使用sudo命令进入从超级管理员: sudo su 输入超级管理员密码. (2) 使用cd命 ...

  3. qt5 交叉编译webkit_Qtwebkit配置,设置交叉编译环境 - croop520的专栏 - 博客频道 - CSDN.NET...

    因为工作需要,要用Qtwebkit在机顶盒中做浏览器,所以首先要在盒子中把Qtwebkit的demo程序跑起来,再接着后面的开发,在跑程序之前,我们要做一些前期的准备工作. 一.搭建交叉编译环境 因为 ...

  4. 嵌入式web服务器lighttpd的交叉编译及配置

    一.前言 最近项目用到嵌入式web服务器lighttpd,在网上找了相关材料并不是很齐全,在这里整理总结一下: 二.编译环境 centos 7.0 lighttpd-1.4.39 pcre-8.42 ...

  5. powerpc linux 交叉编译环境配置

    最近在做powerpc460的复位引导代码(boot rom),首先得配置编译环境. powerpc架构被apple弃用后,它的用武之地也只限于航天.航空.汽车电子等工业领域了.用的地方少了,这方面的 ...

  6. 荔枝派zero开发01 —— 交叉编译的配置

    前言 大部分的资料直接从 荔枝派Zero 用户指南 - Lichee zero 文档 http://zero.lichee.pro/index.html 即可获得 正文: 本来按照文档直接安装交叉编译 ...

  7. arm服务器配置信息,ARM板 web服务器交叉编译及配置

    httpd 一.apr 安装 1.解压 tar -xvf apr-1.7.0.tar.bz2 2.编译 ./configure CC=aarch64-linux-gnu-gcc --host=aarc ...

  8. docker下交叉编译环境配置

    为什么在docker中搭建开发环境? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器 ...

  9. python交叉编译的配置 脚本怎么写_如何写一个简单的脚本并配置

    什么是脚本: 脚本就是一个给计算机照着做的东西 cd ~/desktop 回到桌面 mkdir demo 创建一个demo的文件夹 cd demo 进入demo 这一系列命令的组合就是脚本,当我们运行 ...

最新文章

  1. cassandra百亿级数据库迁移实践
  2. Java并发编程——volatile
  3. Java中的一些零星容易被忽略的API(及时补充)
  4. Windows Phone 7中用好Silverlig“.NET研究”ht开发利器
  5. VMware Tools安装和卸载
  6. docker run 服务名_在 WSL2.0 的 Ubuntu 18 里使用 Docker
  7. webapp之路--之query media
  8. TimesTen Classic 18c 卸载 (uninstall)全过程
  9. 【硬件】PIC32单片机烧写器以及线序说明
  10. 酷柚易汛工资条代码全开源,方便二次开发
  11. 【老生谈算法】matlab实现一维曲线分形维数算法源码——一维曲线分形维数
  12. 微信公众号网页授权并获取用户信息简要流程
  13. 认知-洞察力:洞察力
  14. (原創) 如何設計除頻器? (SOC) (Verilog) (MegaCore)
  15. 域名注册必须实名认证 《互联网域名管理办法》11月1日实施
  16. 滤波电容值得选取-ESR
  17. 汇编指令与Intrinsics指令的对应关系汇总
  18. (Python)从零开始,简单快速学机器仿人视觉Opencv---运用一:快速截取图像中指定单个物体
  19. python怎么搜索文献_学习帖|大神是如何用Python高效解决文献搜索和数据处理!?...
  20. 医药行业大拼杀 小药药、药聚汇、朗致集团医药、同仁堂,模式对比

热门文章

  1. 内存检测工具sanitize
  2. python matplotlib 绘制K线图(蜡烛图)
  3. 为你的 Linux 桌面设置一张实时的地球照片
  4. 最新版谷歌浏览器的锚点小问题 用jquery做出ctrl+f的搜索效果
  5. 机器人中的坐标转换关系(个人记录学习)
  6. 用PAM自定义身份验证
  7. python三维图视角旋转_在python-matplotlib-Jupyter Noteb中交互式旋转三维绘图
  8. Android Retrofit 2.0(三)从源码分析原理
  9. Graphics2D进行后台绘图
  10. 三菱fx2n64mr说明书_三菱FX2N-64MT-D手册FX2N-64MT-D使用说明书 - 广州凌控