从零开始perp交叉编译及配置
文章目錄
- 概述
- 參考資料
- 交叉編譯
- 過程
- 報錯
- 報: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編譯它們
配置
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/下創建目標目錄,例如:
注意:
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找相應的配置文件,如果環境變量沒有的話,將報:
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監視或已停止且不被拉起
第二部分:
.:進程停止,如下所示:
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交叉编译及配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA 使用PCIE高速接口
- 下一篇: linux qt 字体哪个好,QT的的字