关于ARM程序开机自启动

今天在搞一个嵌入式板卡的自启动问题,本来很简单的事情,结果却搞了蛮久,很低级的错误,记录一下吧。

思路:

  1. 在主程序目录下创建执行脚本auboboot.sh,用于启动主程序和监护程序。
  2. 在/etc/init.d 目录下创建脚本startapp.sh,用于启动auboboot.sh.
  3. 在/etc/rc5.d 目录下创建软链接 ln -s ../init.d/startapp.sh S45startapp

这样开机后就应该按照3-2-1的流程执行起来,结果试了很多次都没有成功,调了很久之后,发现是如下问题

  1. 权限问题,对于脚本要增加可执行权限(我一直以为我增加了,因为我有顺手加权限的习惯)
  2. shell脚本下启动程序的命令(./usrdata/test || sh /usrdata/test || /usrdata/test ),我的设备上只能使用第三种。

================================================
后来写了一个监护脚本:

! /bin/bash

PROC_NAME=dtu
while true
do
#statements
val=ps -ef|grep -w dtu|grep -v grep|wc -l
if [ "$val" -le 0 ]; then
echo "process is not run"
/usrdata/dtu
else
echo "process is running..."
fi
sleep 3
done

注意事项:

  1. val=ps -ef|grep -w dtu|grep -v grep|wc -l val和=间不能有空间
  2. if [ "$val" -le 0 ] 中括号两边必须是空格
  3. if [ "val 最好加双引号
  4. /usrdata/dtu 注意根据实际情况,依次尝试sh . 或者什么都不加。
    =================================================

你可能感兴趣的:(关于ARM程序开机自启动)