如何重新启动WiFi连接?

我觉得硬件应该没有问题。有时候无线网络连接会突然断开,可能不一定和之前的情况相同,我可能不需要重新加载任何模块。
但是怎样才能重新启动wlan0呢?我尝试了restart network-manager,但是好像没有影响到wlan0

类似的问题,只是在从暂停或休眠恢复后发生,内部PCI无线网络消失了...这里的任何技巧都无法恢复它...尽管如此,如果我添加一个USB无线网络 - 出于某种原因,它没有这样的问题 - 奇怪。PCI无线网络的驱动程序是臭名昭著的“iwl3945”(Gateway笔记本电脑),它有这个愚蠢的错误,但没有人修复/支持/什么的。解决方法?忘记愚蠢的Linux无线网络,只需将网络电缆插入无线网络扩展器并希望Ubuntu的“社区”最终修复这个在暂停/休眠时崩溃的驱动程序;-.在win7分区中没有这样的无线网络问题。 - The MAJOR
补充:带有Ubuntu 20.04 LTS和64位Windows 7的笔记本电脑。 - The MAJOR
实际上,使用休眠模式没有问题 - Wi-Fi保持稳定。但是如果使用挂起模式,它会在恢复一两次后正常工作,但一旦断开连接,就必须重新启动才能恢复连接。 - The MAJOR
8个回答

你只需要重新启动网络管理器即可:
sudo service NetworkManager restart

在Ubuntu 20.10之前:
sudo service network-manager restart

12在较新的Ubuntu版本上,根据系统是否使用systemd,最好使用sudo systemctl restart NetworkManager来重新启动网络管理器。 - TSJNachos117
1对我来说没问题,在ThinkPad t420上运行16.04。有没有任何记录的原因需要我们这样做? - mbigras
哈哈,是的,但在Ubuntu GNOME 17.04上,当网络失效时,sudo命令无法使用。真是个进退两难的局面。 - grofte
这个不适合我(Dell Inspiron 9400)。 - Hibou57
service network-manager restart添加到桌面文件或快捷方式中非常方便(无论如何都会要求密码)。 - user47206
我使用的是非Ubuntu发行版(Fedora),对我来说,命令是sudo service network-manager restart - That Brazilian Guy

这些不需要root权限,以防你正在编写脚本。
nmcli networking off 
nmcli networking on

想要了解更多,请执行以下命令:man nmcli

编辑:

正如评论中这些人所说,仅适用于WI-FI:

nmcli radio wifi off
nmcli radio wifi on

6不错!(+1)为了更具体地针对WiFi连接,可以使用以下命令:nmcli radio wifi off 然后是 nmcli radio wifi on - n1k31t4
1@n1k31t4,您介意编辑这个答案吗?这正是 OP 所需要的,可能还有很多其他人在查看这篇帖子。 - asgs
1-1. 在Ubuntu 20.04上运行这些命令后,WiFi不再工作。不得不重新启动。 - Sumit

试试这个:

sudo ifconfig wlan0 down
sudo ifconfig wlan0 up

2假设这些接口在/etc/network/interfaces文件中定义。否则,您可能会遇到臭名昭著的“未知接口”错误。 - asgs

重新加载驱动程序

查找模块名称

让我们找出您的无线连接的内核模块的名称:

sudo hwinfo --network

(如果您没有安装它,请安装hwinfo软件包。)
在“驱动程序”行中查找模块名称。

重新加载模块

现在卸载然后重新加载模块。 例如,我的模块名称是iwlwifi
如果运气好的话,您可能不会收到错误消息,这种情况下您可以立即重新加载它。
$ sudo modprobe iwlwifi

但很可能你会收到这个失败的消息:
$ sudo modprobe -r iwlwifi
modprobe: FATAL: Module iwlwifi is in use.

所以我们开始寻找使用iwlwifi的其他模块:
$ lsmod |grep iwlwifi
iwlwifi               241664  1 iwldvm
cfg80211              765952  4 iwldvm,iwlwifi,mac80211,rtl8187

左边是模块名称,右边是使用它的其他模块。 所以让我们先尝试禁用iwldvm模块:
$ sudo modprobe -r iwldvm

如果这个方法成功的话,我们现在就能够成功禁用iwlwifi
$ sudo modprobe -r iwlwifi

现在按相反的顺序重新启用这两个模块:
$ sudo modprobe iwlwifi
$ sudo modprobe iwldvm

完成!

这是我在重置使用iwconfig设置的低级设置(frag, rate)时唯一有效的方法。

它的有效作用是"重新加载驱动程序"。


1谢谢!这是我找到的唯一有效的解决方案,我尝试了其他方法,但都没有成功。以下是详细信息,以便帮助其他人找到答案:我在Asus T100上运行Debian 10.9(32位)。我的问题是,WiFi连接会断开,当它尝试恢复时,可以看到其他更远的WiFi路由器,但看不到我的。运行停止和重新启动设备的命令,在我的情况下是"brcmfmac",重置后它就能正常工作。这可能会让一些正在运行的程序(例如Pidgin)感到困惑,所以我先关闭它们。在我的情况下,只需要第一个命令和立即重新启动就可以解决问题[对此进行了小的编辑以澄清]。 - lessthanideal

你可以尝试断开设备的电源。假设你无法或不愿意物理上断开设备,你应该以root身份运行以下命令:iwconfig wlan0 txpower off。然后等待10-15秒,确保任何硬件问题已经停止,然后运行:iwconfig wlan0 txpower auto
或者,你可以直接使用rfkill来阻止/解除阻止设备。要这样做,请先运行rfkill block wifi,然后再运行rfkill unblock wifi。第二种选项应该更快,因为你只需要在命令之间等待2-3秒,而不是10-15秒。实际上,在我的机器上,我根本不需要等待,尽管我怀疑这取决于你的WiFi硬件。这个选项也可以作为普通用户执行,不需要root权限。
你还可以重启NetworkManager。如果你使用systemctl作为你的初始化系统(在较新版本的Ubuntu中是这样),你可以使用systemctl restart NetworkManager。否则,你可以使用sudo initctl restart network-manager。如果你不知道你使用的初始化系统是什么,可以尝试这两个命令,看哪个有效。

这更像是一个软件问题而不是硬件问题,因为在Ubuntu16.04之前它一直工作正常,而且多个用户都遇到了相同的问题,使用的也是相同的Ubuntu版本。 - Hibou57

根据之前的链接建议,创建了一个脚本,并混合使用了之前的链接。这对我来说在Mint Linux 17.3下运行正常。
下面的文件不需要root访问权限。 只有在wifi已经断开的情况下才会重新启动wifi。 现在我只需要将这个脚本添加到cron作业中,每隔15分钟检查我的wifi连接即可。
#!/bin/bash

wlan=$(/sbin/ifconfig wlan0 | grep inet\ addr | wc -l)
if [ $wlan -eq 0 ]; then
nmcli nm wifi on
else
echo "interface is up"
fi

+1 对于自动化这个过程的努力。-1 因为这个脚本不会重新启动WiFi连接,它只会在连接已经断开的情况下才会启动。虽然这可以解决如果OP的问题完全断开连接的情况。然而,如果连接保持正常且具有有效的IP地址,但停止传输数据,那么这个脚本就无法起作用。-1 在自动化(cron'd)脚本中使用echo - Jim


使用“systemctl restart NetworkManager”这个解决方法对我来说很有效,我在两台不同的笔记本上都尝试过,它们分别搭载了Broadcom和Atheros无线网卡,并运行着Debian Buster和Ubuntu 19.04操作系统。在每四次左右的恢复中,无线网络在唤醒后无法正常工作(通常情况下是正常的)。 起初,我尝试创建一个桌面快捷方式手动重置无线网络,这种方法可行,但需要输入密码。然后,我发现有人将重置命令放入系统中在恢复后运行脚本的位置。具体来说,就是将脚本放在/lib/systemd/system-sleep/目录下看起来是个不错的位置。而且,这个脚本最好能通过命令行参数检测一些条件,以确定是否是重置NetworkManager的合适时机。抱歉我没有直接复制粘贴,而是提供了链接 - 我还没有征得这位作者的许可,他也可能因为这个YouTube视频(内容直击要点,叙述流畅)而获得赞赏。

除此之外,我注意到在Ubuntu 16.04中解决原始问题的一些非常简单和直接的方法:wifi.scan-rand-mac-address=no 在NetworkManager.conf文件中,甚至只需执行apt-get update && apt-get upgrade。这些是对16.04特定错误的最佳解决方案。它们可能不适用于其他类似问题,但可以通过每次从挂起状态恢复后重启NetworkManager来解决。