openwrt 的开机自启的机制是:
创建 /etc/init.d/[service]
这个 service 本质是一个脚本,会重载/etc/rc.common
里的启停函数(应该可以这样理解)
脚本里面标注 START STOP 的值,会被认定为该服务的优先级。
然后就可以通过 service [service_name] start/stop
来启停服务
最后 service [service_name] enable
就会创建 /etc/rc.d/S50uhttpd --> /etc/init.d/uhttpd
的软链接
最后,该服务就会根据优先级进行开机启动
现在的问题是,写了了一个简单的服务,大致是:
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
START=55
STOP=55
start() {
echo start
/usr/sbin/xxxx -a -b -c
}
stop() {
echo stop
/usr/bin/killall [service_name]
}
boot() {
echo boot
start
}
脚本也加了执行权限和 enable 了,也能看到软链接。但是就是无法开机启动。日志也无法排查,不知道是什么情况?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.