如何禁用avahi-daemon?


39

我如何禁用avahi守护程序,如果它作为服务出现但不在rcN.d中,您可以向我解释它如何运行?


您可以在这里停止阅读。实际上,除非您想教一些Ubuntu的新手,否则请这样做。上面的问题应该足够清楚,可以回答。剩下的只是我在呼吁人们寻求一种更加结构化的方式来寻找围绕Ubuntu的方式。我可以或多或少地使用其他“类UNIX”系统。

我是一个初学者,所以如果我做事不明智,请考虑一下您的日常WTF,但请帮助我改善。

每次启动时,/sbin/init似乎正在启动一个名为avahi-daemon

# initctl list | grep avahi
avahi-daemon start/running, process 1280

作为用户 avahi

# id avahi
uid=107(avahi) gid=118(avahi) groups=118(avahi)

a ps -efww ef显示了两个处于活动状态的进程,都称为avahi-daemonPPID第一个avahi-daemon确实是1,第二个进程只是第一个的子进程。该PPID= 1是什么让我觉得这是自动启动。


可选地:

我真的不知道该如何正确地检查在系统启动时执行了什么。

这是获取启动时运行的服务列表的方法吗? initctl list | sort


无论如何,我似乎可以通过以下命令暂时停止此“服务”:

service avahi-daemon stop

或者实际上是这个命令

/etc/init.d/avahi-daemon stop

直接,这/usr/sbin/service似乎正在使用:

env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE"

启动后,脚本会提醒我我正在控制“ Upstart”服务,并且应该使用更简单的调用stop avahi-daemon。我想我需要学习Upstart,但是现在,我需要学习的是:

如何在Ubuntu中禁用服务?

这是我尝试过的方法(这应该是正确的方法,不是吗?):

update-rc.d avahi-daemon disable

但它抱怨:

System start/stop links for /etc/init.d/avahi-daemon do not exist

所以我去寻找二进制文件的路径:

# Let me know if there is a better way to get the path above
readlink "/proc/$(echo `ps --no-headers -o pid -C avahi-daemon | head -n 1`)/exe"

这是:

/usr/sbin/avahi-daemon

以及以下任何可被视为“可执行文件”的内容etc

find /etc -type f -name '*avahi*' -perm -u+x

以为我会在中找到启动脚本/etc/rcN.d。我找到了其他东西:

/etc/dhcp/dhclient-exit-hooks.d/zzz_avahi-autoipd
/etc/dhcp/dhclient-enter-hooks.d/avahi-autoipd
/etc/resolvconf/update-libc.d/avahi-daemon
/etc/network/if-up.d/avahi-autoipd
/etc/network/if-up.d/avahi-daemon
/etc/network/if-down.d/avahi-autoipd
/etc/avahi/avahi-autoipd.action

好像这个avahi-daemon东西是在网络状态变化时启动的?有没有更好的方法来查找系统上自动启动的二进制文件?

rc{3,5}.d在这个阶段,我通常会消除各种符号链接,但现在我不太确定。究竟是什么开始了这个野兽?没有apt-get remove或如何禁用它apt-get purge

据我所知,它没有打开太多的资源:

lsof -p $(echo `ps --no-headers -o pid -C avahi-daemon | head -n 1`)

乍一看,它也不会使用太多的CPU周期htop

我写了这个单行代码,看一分钟它是否在CPU util上变得很时髦,但从来没有,但是让我知道是否有更好的方法来检查:

for i in {1..59}; do ps -p $(echo `ps --no-headers -o pid -C avahi-daemon | head -n 1`) --no-headers -o pcpu; sleep 1; done

9
A努力!
Geoff

Answers:


22

可在/etc/init其中找到Upstart启动脚本avahi-daemon.conf。列出的所有内容都initctl list与中的脚本匹配/etc/init,并且它们不可执行,因此您find错过了它们。

要禁用Upstart受控服务,请参见Upstart Cookbook有关禁用服务的信息:添加#start on行或使用替代文件(例如:)sudo sh -c "echo manual > /etc/init/avahi-daemon.override"


或注释掉整个start on节,以讲技术。例如,我注释了三行。
noobninja

使用效果更好service avahi-daemon stop
Martijn van Wezel

16
sudo systemctl disable avahi-daemon

在Ubuntu Gnome 15.10上为我工作


2
您也可以运行“ sudo systemctl stop avahi-daemon”立即将其停止。这是对这个问题的真正答案。
EnzoR

8

我发现,即使我停止avahi-daemon(和avahi-daemon.socket),Firefox也总是重新启动它。但是,这可行,并且会永久禁用此烦人的守护程序:

apt-get remove avahi-daemon

Firefox与这个问题有什么关系?
Mxx

2
@Mxx firefox只是触发套接字,从而重新启动Avahi。为了使wget和curl不使用它,我也必须将其卸载。
qwertzguy

激烈的解决方案,但又快速又有效!
andilabs

阅读所有答案,认为这是个玩笑,尝试了其他答案都无济于事,最后使用了这个答案并予以支持
golimar

5

您可能不需要在PC启动时阻止它启动,但是respawn当您杀死它时,可能会阻止它启动。

所以,只要注释掉respawn/etc/init/avahi-daemon.conf

终止该进程始终失败,因此无法airmon-ng check通过。注释掉重生,它杀死了我,再也没有回来寻找我。



0

怎么样使用

sysv-rc-conf

为了这些东西?非常方便!

(即,首先使用apt-get安装它,然后以sudo的身份运行它)


0

刚刚使用过,在Ubuntu 16.04上运行良好

service avahi-daemon stop


我知道OP使用此行,但总结了谁在搜索简单命令(例如我自己)。


0

只是清除它。或者在rc3.d,rc4.d和rc5.d中禁用它,例如su / root

apt-get purge avahi-daemon

比它应该关闭您的系统。检查您的/etc/rc3.d和其他文件,它应该在启动后就消失了。

不要使用systemd禁用禁用,最好的方法是在运行层中将运行脚本删除或更改为K而不是S。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.