有时,由于各种原因,我的Wi-Fi连接不再起作用。通过网络指示器的图形界面禁用和重新启用Wi-Fi不能解决这些情况下的问题。
如何从命令行完全重新启动Wi-Fi连接,而不必重新启动计算机(可以解决这些问题)?
看一下堆栈交换链接
—
Nick Sillito
有时,由于各种原因,我的Wi-Fi连接不再起作用。通过网络指示器的图形界面禁用和重新启用Wi-Fi不能解决这些情况下的问题。
如何从命令行完全重新启动Wi-Fi连接,而不必重新启动计算机(可以解决这些问题)?
Answers:
nmcli
是与网络管理器进行交互的非常有用的命令行实用工具。在Ubuntu 16.04 LTS中使用此命令
nmcli radio wifi off && sleep 5 && nmcli radio wifi on
对于15.10之前的版本(即,在过渡到之前systemd
),命令将略有不同:
nmcli nm wifi off && sleep 5 && nmcli nm wifi on
这样做的好处-不需要root权限。
重新启动网络管理器本身也是一个好主意。
对于16.04 LTS:
sudo systemctl restart NetworkManager
对于14.04 LTS:
sudo service network-manager restart
而且,如果我们真的愿意,我们甚至可以使用脚本将其自动化以重新启动wifi。
#!/bin/bash
# replace wlan0 with your device name
# as given by ip addr or ifconfig
while true
do
# keep checking if we have ip address
wifi_info=$(ip -4 -o addr show wlan0 )
while [ -n "$wifi_info" ];
do
wifi_info=$(ip -4 -o addr show wlan0 )
sleep 0.25
done
# We get here only if IP address is lost
# which means we're off-line
# restart wifi
nmcli radio wifi off && sleep 5 && nmcli radio wifi on
done
.service
暗示,因此可以省略sudo systemctl restart NetworkManager
.service
。
systemd
init系统-在启动时实际上会启动基本服务和守护程序的东西。问题在于,与旧的东西不同,它不仅systemd
试图开始东西,而且还要管理 东西。这导致nmcli
被重写以与匹配systemd
。至少这是我的理解。