禁用和卸载树莓派 4B 上 avahi-daemon

关键词:树莓派、Linux、avahi、avahi-daemon、CPU

背景

在树莓派4B上安装了官方的 Ubuntu 系统,运行 top 指令,发现 avahi-daemon 占用 CPU 高,且对 CPU 的消耗波动比较大。

查资料发现:

Avahi 允许程序在不需要进行手动网络配置的情况 下,在一个本地网络中发布和获知各种服务和主机。例如,当某用户把他的计算机接入到某个局域网时,如果他的机器运行有Avahi服务,则Avahi程式自动广播,从而发现网络中可用的打印机、共享文件和可相互聊天的其他用户。这有点象他正在接收局域网中的各种网络广告一样。

除非你有兼容的设备或使用 zeroconf 协议的服务,否则应该关闭它。

我不需要 zeroconf 的相关功能,遂尝试禁用或者卸载 avahi-daemon

处理过程

基本环境:

  • 硬件:树莓派4B
  • 系统:Ubuntu 21.10 (GNU/Linux 5.13.0-1031-raspi aarch64)
  • 权限:root 用户权限

方式一:停止和禁用服务

首先尝试禁用 avahi-daemon :(root 权限)

1
2
3
4
5
6
7
8
9
# 尝试停止并禁用 avahi-daemon
## 查看 avahi-daemon 当前状态
systemctl status avahi-daemon.service
## 停止 avahi-daemon
systemctl stop avahi-daemon.service
## 再次查看 avahi-daemon 当前状态
systemctl status avahi-daemon.service
## 禁用 avahi-daemon
systemctl disable avahi-daemon.service

执行停止 avahi-daemon 的时候,返回一个提示:avahi-daemon.socket 可能会重启 avahi-daemon。出现这种情况时,说明 avahi-daemon 是由 avahi-daemon.socket 启动的,我们单独停止和禁用 avahi-daemon 是不行的,它还会自动启动。

需要先停止 avahi-daemon.socket,再停止 avahi-daemon

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 停止和禁用 avahi-daemon.socket
## 查看 avahi-daemon.socket 当前状态
systemctl status avahi-daemon.socket
## 停止 avahi-daemon
systemctl stop avahi-daemon.socket
## 再次查看 avahi-daemon 当前状态
systemctl status avahi-daemon.socket
## 禁用 avahi-daemon
systemctl disable avahi-daemon.socket

# 停止和禁用 avahi-daemon
## 查看 avahi-daemon 当前状态
systemctl status avahi-daemon.service
## 停止 avahi-daemon
systemctl stop avahi-daemon.service
## 再次查看 avahi-daemon 当前状态
systemctl status avahi-daemon.service
## 禁用 avahi-daemon
systemctl disable avahi-daemon.service

由于本人遇到了重启后这2个服务还会自动重启的情况,所以最终通过卸载的方式来解决的。你可以根据自己的实际情况,决定是否使用卸载的方案。

方式二:卸载 avahi-daemon 相关的所有服务

由于单纯的卸载 avahi-daemon 可能引起依赖它的软件无法正常运行,此操作需要慎重考虑和检测:

1
2
3
4
5
6
7
8
# 卸载方式一:卸载并清理配置文件
apt-get purge avahi-daemon
# 卸载方式而:卸载并保留配置文件
apt-get remove avahi-daemon
#注意:卸载时可能会提示下列软件包将被【卸载】,即卸载 avahi-daemon 会同时卸载依赖它的软件

# 最后,你可以清理下不需要的自动安装的软件:
apt autoremove

资料:

如果有什么建议或者问题可以随时联系我,共同探讨学习: