强制 NetworkManager 重新启动并重新加载网络驱动程序而无需重新启动

强制 NetworkManager 重新启动并重新加载网络驱动程序而无需重新启动

我经常遇到 NetworkManager 及其相关组件的问题,当我没有时间调试或修复问题时,这些问题总是会失败。我正在尝试弄清楚如何积极地重新启动并卸载/加载两个内核模块以重新启动 NetworkManager。可以将其视为系统的软重启,但不注销。我已经设法对蓝牙问题执行了同样的操作,例如 btuse 并重新启动 bluetoothd。

我正在测试的系统:硬件:Thinkpad T460 操作系统:Arch Linux 网卡:WLAN 和英特尔网卡

到目前为止我遇到以下问题:

kernel: NetworkManager  D    0 17671      1 0x00000004
kernel: Call Trace:
kernel:  __schedule+0x239/0x890
kernel:  schedule+0x3d/0x90
kernel:  schedule_preempt_disabled+0x15/0x20
kernel:  __mutex_lock.isra.2+0x295/0x520
kernel:  ? __follow_mount_rcu.isra.30+0x68/0xe0
kernel:  __mutex_lock_slowpath+0x13/0x20
kernel:  ? __mutex_lock_slowpath+0x13/0x20
kernel:  mutex_lock+0x25/0x30
kernel:  misc_open+0x28/0x170
kernel:  chrdev_open+0xa3/0x1c0
kernel:  do_dentry_open+0x1bc/0x2e0
kernel:  ? cdev_put.part.3+0x20/0x20
kernel:  vfs_open+0x4e/0x80
kernel:  path_openat+0x51e/0x13a0
kernel:  ? shmem_getpage_gfp+0xf2/0xbc0
kernel:  do_filp_open+0x9b/0x110
kernel:  ? __check_object_size+0xaf/0x1b0
kernel:  ? __alloc_fd+0xb2/0x160
kernel:  do_sys_open+0x1ba/0x250
kernel:  ? do_sys_open+0x1ba/0x250
kernel:  SyS_openat+0x14/0x20
kernel:  entry_SYSCALL_64_fastpath+0x1a/0xa5
kernel: RIP: 0033:0x7f2925471360
kernel: RSP: 002b:00007ffe2271fa50 EFLAGS: 00000293 ORIG_RAX: 0000000000000101
kernel: RAX: ffffffffffffffda RBX: 000055fe3e292200 RCX: 00007f2925471360
kernel: RDX: 0000000000080002 RSI: 000055fe3c860343 RDI: ffffffffffffff9c
kernel: RBP: 00007f2925457240 R08: 0000000000000000 R09: 0000000000000000
kernel: R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
kernel: R13: 0000000000000000 R14: 0000000000000000 R15: 00007f2927e5fb68
kernel: NetworkManager  D    0 17797      1 0x00000004

此外,NetworkManger 进程没有得到正确清除,它们仍然以“僵尸进程”的形式存在,从而阻止服务重启

➜  ~ ps -A | grep Net
 2392 ?        00:00:00 NetworkManager
 2654 ?        00:00:00 NetworkManager
 2789 ?        00:00:00 NetworkManager
 2911 ?        00:00:00 NetworkManager
 3966 ?        00:00:00 NetworkManager
 4149 ?        00:00:00 NetworkManager
 4308 ?        00:00:00 NetworkManager
 4884 ?        00:00:00 NetworkManager
 5047 ?        00:00:00 NetworkManager
 5159 ?        00:00:00 NetworkManager
 5284 ?        00:00:00 NetworkManager
 5392 ?        00:00:00 NetworkManager
 5487 ?        00:00:00 NetworkManager
 5634 ?        00:00:00 NetworkManager
 5738 ?        00:00:00 NetworkManager
 5839 ?        00:00:00 NetworkManager
 6009 ?        00:00:00 NetworkManager
 6118 ?        00:00:00 NetworkManager
 6213 ?        00:00:00 NetworkManager
 6358 ?        00:00:00 NetworkManager
 6478 ?        00:00:00 NetworkManager
... many more

我仍然可以通过从命令行设置 LAN 和 WLAN 来获得网络访问。

任何建议都很好,即使结果很糟糕也没关系。我宁愿系统出现内核崩溃,也不愿做任何事情。因为目前唯一的其他选择是重新启动。

答案1

如果我理解正确的话,systemctl restart NetworkManager它不起作用,您需要重新启动。

所以,也许我错了,但如果它真的没有“正确清除”,看起来你需要重新启动而systemd无需重新启动......

不知道这是否能解决您的问题,但要重新启动systemd而无需重启,您可以执行(以 root 身份)

  • systemctl daemon-reexec

或者

  • systemctl restart systemd-journald

相关内容