记得去年,写过一个程序,是运行在OpenWrt上的,想让程序开机自启动,最后费了9牛二虎之力,模仿别人的总算写出来了。但是一直没有明白为什么要这样,刚刚看open的官网,一下子恍然大悟。网址如 http://wiki.openwrt.org/doc/devel/packages
在“Packging a service”一节中,对这个问题进行说明。大意是如果你想在openwrt上运行一个服务(当然,这个服务是开机自启动的),你需要为这个服务写一个自启动脚本放在/etc/init.d/目录下,同时你需要把启动脚本中设置 START=20/STOP=90。下面是一个例子,在/etc/init.d/foo
#!/bin/sh /etc/rc.common
# "new" style init script
# Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_
# options you can use, and when you might want them.
START=80
APP=mrelay
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1
start() {
service_start /usr/bin/$APP
}
stop() {
service_stop /usr/bin/$APP
}
如果程序是和系统同时编译并安装进去的,不需要另外设置,服务就会开机自启动。但是,如果你是利用opkg安装这个程序,则需要运行/etc/init.d/下的启动脚本,对于上面的启动脚本,必须要运行如下代码,服务才能够实现开机自启动
/etc/init.d/foo enable
此时会发现rc.d/目录下多出了关于foo的一个链接,如果链接出现,证明开机自启动ok了。取消开机子启动命令如下,执行完后/rc.d/下的链接会消失。
/etc/init.d/foo disable