我在嵌入式板上写了while true; do ping 10.9.0.1; sleep 1; done
字。/etc/rc.local
我已经等了20多分钟了,还是没有收到登录提示。要么卡在启动上,要么启动速度非常慢(通常在我的设备上需要不到 2 分钟才能收到登录提示)。
我可以通过将 SD 卡插入笔记本电脑并删除while(1)
.但我想知道如果我在 PC/笔记本电脑上做了这样的事情,是否可以修复它而无需重新安装发行版?
答案1
首先,正如所写的,ping
除非我们无法找到主机,否则您将永远运行,因为它会一直运行直到捕获到SIGINT
告诉它停止的信号(即)。
/etc/rc.local
据我记得,中的脚本不是在后台运行的。因此,您的脚本永远不会完成,因为它是一个无限循环。根据您执行此操作的具体原因,您可以将其设置为后台或将其更改为在满足条件时退出。
如果您这样做是为了延迟直到网络出现,您可以:
while ! ping -c1 10.9.0.1; do
sleep 1
done
或者,如果您确实希望在后台运行每秒一次的 ping,则可以使用screen
或nohup
或disown
将进程与 shell 分离并允许启动继续进行。
无论哪种方式,这都是一件潜在危险的事情,因为如果出现问题,您没有任何方法可以在启动时停止脚本。
/etc/init.d/
您可能会更好地使用与您选择的运行级别相关联的脚本,该脚本具有足够的逻辑,可以在事情花费太长时间时中止。