【发布时间】:2014-08-31 00:12:23
【问题描述】:
我有几块板子经常需要重启。大约百分之十的时间,网络接口无法启动(ifconfig 没有显示任何内容,r8169 驱动程序无法加载等)。我试图找出根本原因,但同时需要快速修复。我编写了一个在启动时运行的快速 bash 脚本,通过 ping 本地接口来检测接口是否关闭,然后在必要时重新加载网络。
相关代码部分:
echo 'fixnet running' > $NV_LOG
if ping -c 1 127.0.0.1; then
echo "Network ok." >> $NV_LOG
else
echo "$ERR Network down, starting up" >> $NV_LOG
/etc/init.d/network restart
fi
如果我手动运行此脚本 (./testNet.sh),它会按预期工作。但是,如果脚本在启动时运行,它似乎在 ping 测试命令期间失败('fixnet running' 输出到 $NV_LOG,但没有别的)。当网络接口关闭时会发生这种情况 - 如果网络正常启动,此启动脚本也可以正常工作。我是 bash 脚本的新手,不知道从哪里开始。
编辑:实际上,当板出现故障时,脚本根本不会执行。感谢您的解决方案,但问题出在其他地方。我会结束这个问题。
【问题讨论】:
-
提供
ping二进制文件的完整路径。 (即/bin/ping -c 1 127.0.0.1) -
我不同意这种说法,即如果“IF”语句失败,它什么也不做,那么它肯定会回显 $ERR Network down,在同一个日志文件中盯着一行...看起来,ping 命令从未向 IF 语句返回任何结果,因此日志中除了“fixnet running”之外没有任何输出
标签: bash shell networking openwrt