关键词:树莓派、Linux、avahi、avahi-daemon、CPU
如果移动端访问不佳,请访问–> GithubPage 版
背景
在树莓派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 权限)
# 尝试停止并禁用 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
:
# 停止和禁用 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 可能引起依赖它的软件无法正常运行,此操作需要慎重考虑和检测:
代码语言:javascript复制# 卸载方式一:卸载并清理配置文件
apt-get purge avahi-daemon
# 卸载方式而:卸载并保留配置文件
apt-get remove avahi-daemon
#注意:卸载时可能会提示下列软件包将被【卸载】,即卸载 avahi-daemon 会同时卸载依赖它的软件
# 最后,你可以清理下不需要的自动安装的软件:
apt autoremove
资料:
- Removing the avahi-daemon on Ubuntu
如果有什么建议或者问题可以随时联系我,共同探讨学习:
- Github: likfe
- CSDN:他叫自己Mr.张
- 掘金:cafeting
- 微博:cafeting