嵌入式学习七:/etc/init.d/networking restart 报错原因

版权声明:原创文章,转载请注明: 转载自 DT-IOT的博客https://blog.csdn.net/weixin_41213648 https://blog.csdn.net/weixin_41213648/article/details/88081758

Linux版本:Ubuntu 12.04

配置网口后重启网络,提示/etc/init.d/networking restart is deprecated。

$ sudo /etc/init.d/networking restart
* Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces
* Reconfiguring network interfaces...          [ OK ]


在网上搜了半天,找到几种方法试了下。

一种说法是/etc/init.d/networking restart已被废弃,只保留/etc/init.d/networking start|stop,但测试结果表明stop|start可用性更差。
执行sudo /etc/init.d/networking stop后,除了loopback其它网卡都被停掉(有时会直接死机……),而且无法通过sudo /etc/init.d/networking start再启动,只能重启系统。

一种方法是先更新iptables再重启网卡

$ sudo iptables-save
$ sudo /etc/init.d/networking restart

但结果依然报错,跟直接执行/etc/init.d/networking restart一样。

还有一种方法是用命令service networking restart替代/etc/init.d/networking restart。

复制代码

zlf@zlf:/etc/init.d$ service networking restart
stop: Unknown instance:
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.94" (uid=1000 pid=3847 comm="start networking ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

zlf@zlf:/etc/init.d$ sudo service networking restart
stop: Unknown instance:
networking stop/waiting

复制代码

区别是报错信息不同了,但目测也不起作用。

只好撸起袖子自己干了,打开/etc/init.d/networking看了看,这是个shell脚本,对restart的处理实际用的命令是ifdown -a和ifup -a。

复制代码

case "$1" in
start)
        /lib/init/upstart-job networking start
        ;;
stop)
        check_network_file_systems
     -------略过-------

force-reload|restart)
         process_options
 
         log_warning_msg "Running $0 $1 is deprecated because it may not enable again some interfaces"
         log_action_begin_msg "Reconfiguring network interfaces"
         ifdown -a --exclude=lo || true
         if ifup -a --exclude=lo; then
             log_action_end_msg $?
         else
             log_action_end_msg $?
         fi
         ;;

复制代码


man一下ifdown和ifup,ifdown可以停止正在运行的网口,而ifup可以启动在/etc/network/interfaces文件中配置并标有auto的网口,auto表示开机自动启动。

ifdown -a
       Bring down all interfaces that are currently up.
ifup -a
       Bring up all the interfaces defined with auto in /etc/network/interfaces


于是试了试sudo ifdown -a,sudo ifup -a,网卡重启成功。

所以,对需要重启的网口,先确认/etc/network/interfaces配置中有auto标识,然后用ifdown -a | ifup -a实现重启。
比如eth0的配置

auto eth0
iface eth0 inet dhcp
----下略----

备注:若用 sudo ifdown eth0;ifup eth0 同样无效 ;则改为 sudo ifdown eth0; sudo ifup eth0 配置生效 是Ubuntu版本问题。

猜你喜欢

转载自blog.csdn.net/weixin_41213648/article/details/88081758