让 systemd 停止启动不需要的 wpa_supplicant 服务?

让 systemd 停止启动不需要的 wpa_supplicant 服务?

我想禁用systemd不需要的自动启动尝试wpa_supplicant。我想我可以简单地运行一个

sudo systemctl disable wpa_supplicant.service --global

我不会ps -ef再在输出中看到 wpa_supplicant 了。无论如何,这不起作用。我怎样才能让它发挥作用?

我手头的问题可能可以通过以下输出来最好地描述

$>systemctl status wpa_supplicant*
● wpa_supplicant.service - WPA supplicant
   Loaded: loaded (/usr/lib/systemd/system/wpa_supplicant.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2016-08-28 20:57:37 CEST; 14min ago

正如你所看到的,disabled服务无论如何都已加载并处于活动状态,这要感谢 systemd 完全帮助我做了最简单的事情;)

更新
我似乎通过粗暴地删除这些文件而获得了一些运气:

[email protected]
wpa_supplicant.service
[email protected]
[email protected]

/usr/lib/systemd/system文件夹。你猜怎么了?重启后wpa终于不再启动了systemd。令我震惊的是,虽然肯定还有更多平静的/和解systemd使服务未启动的方法。

答案1

+只会sudo systemctl disable wpa_supplicantsudo systemctl stop wpa_supplicant暂时禁用 wpa_supplicant服务直至网络管理员重新启动和/或系统重新启动

所以,为了正确地和/或完全地即使在网络管理器之后,也禁止该wpa_supplicant服务将来再次运行重新启动和/或系统重新启动是为了面具服务,即

systemctl mask wpa_supplicant.service

等等,正如本文所指出的文章。这将创建一个符号文件

/etc/systemd/system/wpa_supplicant.service → /dev/null

我希望这有帮助。

答案2

我遇到了和你一样的问题。经过一番挖掘,我发现了一个名为:

/usr/share/dbus-1/system-services/fi.w1.wpa_supplicant1.service

该文件用于允许 d-bus 激活服务。即使服务被禁用,d-bus 也可以激活该服务。我通过重新命名文件然后重新启动来确认发生了这种情况。我看到此时wpa_supplicant还没有开始!要进一步追查问题,需要找出哪个程序正在wpa_supplicant通过激活d-bus。我没有这样做,因为屏蔽单元文件可以很好地满足我的目的。

答案3

之前的所有回答都太过分了。您可以禁用 NetworkManager 来wpa_supplicant管理 wifi 客户端:

nmcli radio wifi off

此后,NetworkManager 将不会尝试将 wifi 设备作为客户端进行管理。现在您可以禁用/停止该wpa_supplicant服务,而不必担心它会自动启动:

systemctl disable wpa_supplicant
systemctl stop wpa_supplicant

请注意,NM 可能仍在管理用于 wifi 连接的活动网络接口。要消除这个问题,只需nmcli c查看接口,然后:

nmcli c d wlan0

...对于名为 的 wifi 接口wlan0

答案4

这里真正令人烦恼的并不是 systemd,而是 NetworkManager。您可以告诉 NetworkManager 忽略 wlan0。

该线程中已经有一些好主意。我想我应该将我所做的添加到这个列表中。

  • @GChuf 的方法 - 通过删除 systemd 文件来强制 NetworkManager 失败。删除文件让NetworkManager对着虚空喊叫。我不确定此方法是否可以在软件包更新后继续存在。
  • @Habibie 的方法 - 通过屏蔽 wpa_supplicant 强制 NetworkManager 失败。这使得 NetworkManager 尝试了几次然后放弃。
  • @ChalkTalk 的方法 - 通过关闭无线电强制 NetworkManager 失败。看起来它运行 systemd-rfkill.service。

检查默认设置

默认的 NetworkManager 设置是尝试管理它能得到的任何东西。 NetworkManager 运行 wpa_supplicant 来管理 WIFI 接口 wlan0。它位于进程列表中。

[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID          PID    PPID  C STIME TTY          TIME CMD
root         593       1  0 14:36 ?        00:00:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -u -s
[nick@rpi4 ~]$ 

Wlan0 无法连接,NetworkManager 不断尝试。类似这样的消息每隔几分钟就会出现在日记中。

[nick@rpi4 ~]$ journalctl -f

Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info>  [1615822023.9272] device (wlan0): set-hw-addr: set MAC address to AA:9D:10:50:87:5B (scanning)
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info>  [1615822023.9359] device (wlan0): supplicant interface state: disconnected -> interface_disabled
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info>  [1615822023.9362] device (p2p-dev-wlan0): supplicant management interface state: disconnected -> interface_disabled
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info>  [1615822023.9367] device (wlan0): supplicant interface state: interface_disabled -> inactive
Mar 15 15:27:03 rpi4 NetworkManager[1526]: <info>  [1615822023.9369] device (p2p-dev-wlan0): supplicant management interface state: interface_disabled -> inactive

wlan0 的状态为断开连接

[nick@rpi4 ~]$ nmcli device status
DEVICE         TYPE      STATE                   CONNECTION               
wlan0          wifi      disconnected            --                 

告诉 NetworkManager wlan0 不受管理

编辑 NetworkManager 配置并告诉 NetworkManager 忽略 wlan0。

停止服务。

systemctl stop NetworkManager
systemctl stop wpa_supplicant

将这些行添加到配置文件 /etc/NetworkManager/NetworkManager.conf.如果你想要什么的描述非托管设备就是,跑man NetworkManager.conf

[keyfile]
unmanaged-devices=interface-name:wlan0

然后跑systemctl start NetworkManager

设备状态从断开连接不受管理的。 wpa_supplicant 进程不会再次启动,即使它没有被屏蔽。

[nick@rpi4 ~]$ nmcli device status
DEVICE      TYPE      STATE                   CONNECTION
wlan0       wifi      unmanaged               --   
...
[nick@rpi4 ~]$ ps -fC wpa_supplicant
UID          PID    PPID  C STIME TTY          TIME CMD
[nick@rpi4 ~]$  

相关内容