我在嵌入式平台上使用 Debian wheezy(Solidrun Hummingboard 上的 iMX.6),并且 rfkill 阻止了我的 WiFi。
该命令sudo rfkill unblock wifi
有效,因此我创建了一个名为的脚本unblock_wifi.sh
并将其放入/etc/init.d
:
#!/bin/bash
logFile=/var/log/unblock_wifi.log
timestamp=$(date +%Y%m%d_%H%M%S)
echo "unblock_wifi - Started at $timestamp" > $logFile
rfkill unblock wifi &>> $logFile
timestamp=$(date +%Y%m%d_%H%M%S)
echo "unblock_wifi - Done at $timestamp" >> $logFile
启动时,脚本被调用(日志出现在 /var/log 上,时间是正确的。除了启动和停止消息之外什么都没有),但 wifi 仍然被阻止。如果我在启动后自己调用该脚本,则会启用 wifi。
我的脚本已打开/etc/rc2.d/S05unblock_wifi.sh
,最后出现在ls
,我思考这意味着它最后运行。不过没有 rfkill 的脚本......
如果 init.d 中没有脚本,rfkill 如何运行?它可能在我的脚本运行后运行。我应该将脚本放在哪里才能在 rfkill 之后运行?
编辑:我到处寻找答案,但每个人似乎都建议将脚本放入/etc/init.d
,这就是我尝试过的
答案1
您确定顺序正确吗?这 问题似乎说ls
没有显示正确的顺序,因此您可能需要确保它在其他服务的末尾加载。
答案2
在 Timidger 发表评论后,我开始更深入地了解启动顺序,并发现 connman 是禁用 wifi 的罪魁祸首。禁用其服务满足了我的需要。
供将来参考:启动顺序由每个服务所需的依赖关系决定。如果您希望脚本在某些内容之后运行 - 需要它作为依赖项(请参阅这个问题)--
答案3
在基于 systemd 的系统上,rfkill 状态是通过systemd-rfkill
服务控制的,因此这应该执行重新启动后加载和保存的功能。