openwrt 应用后台运行、开机自启动,一次安装永久启动

openwrt 的自启动和 Linux 差不多,下面简单讲讲

后台运行

实际上要一个应用后台运行,在输入命令的时候加上 “&” 符号就可以了,向下面

helloworld &

开启自启动

开机自启动这好像还是挺多方法的,一个是在 /etc/init.d目录编写文件,一个是在网页上的开机运行脚本上加上上面后台运行的命令。

编写自启动脚本

在 openwrt 开发板命令行中输入

vi /etc/init.d/mystart

里面输入如下内容:

#!/bin/sh /etc/rc.common
START=99
STOP=15

start(){
    echo start helloword
    helloword &
}

stop(){
    echo stop helloword
}

restart(){
    echo restart helloword
}

enable(){
    echo enable helloword
}

disable(){
    echo disable helloword
}

命令应该很好理解,前面 START 和 STOP 是启动和关闭的优先级。

下面是另一种自启动脚本的写法,应该是差不多,注释写的也挺清楚了

#!/bin/sh /etc/rc.common

START=99 # 执行的顺序,按照字符串顺序排序并不是数字排序
STOP=15
SERVICE=helloword
PROG=/bin/helloword
USE_PROCD=1 # 使用procd启动

# start_service 函数必须要重新定义
start_service()
{
    echo service helloword start
    procd_open_instance  # 创建一个实例, 在 procd 看来一个应用程序可以多个实例
    # ubus call service list 可以查看实例
    procd_set_param command $PROG # mycode执行的命令是"/app/mycode", 若后面有参数可以直接在后面加上
    procd_set_param respawn # 定义respawn参数,告知procd当mycode程序退出后尝试进行重启
    # procd_close_instance # 关闭实例
}

编写完文件后还应该记得改一下权限,让脚本能够执行

cd /etc
chmod -R 777 init.d/mystart #设置权限,否则无法激活开机启动,提示权限不足

使用的时候按下面输入命令就可以,和普通服务类似

/etc/init.d/mystart enable #激活开机启动
/etc/init.d/mystart start #运行start函数启动程序
在网页上配置自启动

由于这项目是上一家公司的时候开发的了,都快一年了,源码都在之前公司的笔记本电脑里面,自己电脑没源码,就简单讲讲。

先要打开 openwrt 的网页控制界面,里面找到自启动功能,在里面的文本行中加入下面命令

helloword &

实际上使用起来,好像在网页上配置的自启动还好一些,用配置文件写的但是还总出错,当时是对4G上网模块有影响,具体记不清了。当时分析出错的原因是,用配置文件写的命令在软件被停止后会尝试重新启动,当然如果你没遇到这些问题,两种方法都是可以的。

自启动进阶

网上的博客一般到这里就完了,可是我当时不想做差不多先生,我将自启动脚本写到我们的源码文件中去,在安装的时候就给自动弄好,简单省事,下面看看写法。

  • 先编写配置文件

这里再源码目录总编写我们的自启动脚本文件,以上一篇的 helloword 为例

mkdir ~/openwrt/package/hellworld/auto
cd  ~/openwrt/package/hellworld/auto

这里新起了一个目录来存放我们的配置文件,内容和上面一样,不说了。

接下来的重点是编写外层的 Makefile 文件,在复制那一段将我们的配置文件复制到 /etc/init.d/ 目录中去

define Package/helloword /install
	echo "Here is Package/install"
	$(INSTALL_DIR) $(1)/bin $(1)/etc/init.d/
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloword $(1)/bin/
	$(INSTALL_BIN) ./auto/mystart $(1)/etc/init.d/
endef

注意这里的 $(INSTALL_BIN),复制的是二进制文件,权限问题我忘了,如果启动不了,也还是按上面的方法增加运行权限吧。

结语

到这里应该把我脑子里记得的东西讲的差不多了。

end
完美撒花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值