我如何禁用 avahi-daemon?

我如何禁用 avahi-daemon?

我该如何禁用 avahi-daemon,如果它作为服务出现但不在 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)

aps -efww ef显示有 2 个进程处于活动状态,均称为avahi-daemon,并且PPID第一个进程的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 利用率产生影响,但它从来没有发生过,但如果有更好的方法来检查的话,请告诉我:

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

答案1

sudo systemctl disable avahi-daemon

在 Ubuntu Gnome 15.10 上为我工作

答案2

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

要禁用 Upstart 控制的服务,请参阅Upstart 禁用服务指南:添加#start on行,或使用覆盖文件(例如sudo sh -c "echo manual > /etc/init/avahi-daemon.override":)。

答案3

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

apt-get remove avahi-daemon

答案4

您需要mask阻止socket应用程序启动avahi-daemon

systemctl mask avahi-daemon.socket
systemctl disable avahi-daemon
systemctl stop avahi-daemon

相关内容