如何禁用 avahi-daemon?

Rob*_*ino 42 upstart services

我如何禁用 avahi-daemon,如果它显示为服务但它不在 rcN.d 中,你能向我解释它是如何运行的吗?


你可以在这里停止阅读。事实上,除非你想教一个菜鸟一些 Ubuntu,否则请这样做。上面的问题应该很清楚,可以回答。剩下的就是我呼吁一些更结构化的方法来找到绕过 Ubuntu 的方法。我或多或少可以使用其他“类 UNIX”系统。

我是初学者,所以如果我的行为荒谬,请把我视为您的日常 WTF,但请帮助我改进。

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

# initctl list | grep avahi
avahi-daemon start/running, process 1280
Run Code Online (Sandbox Code Playgroud)

作为用户 avahi

# id avahi
uid=107(avahi) gid=118(avahi) groups=118(avahi)
Run Code Online (Sandbox Code Playgroud)

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


可选:

我真的不知道如何正确检查系统启动时执行的内容,考虑一下。

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


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

service avahi-daemon stop
Run Code Online (Sandbox Code Playgroud)

或者确实是这个命令

/etc/init.d/avahi-daemon stop
Run Code Online (Sandbox Code Playgroud)

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

env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE"
Run Code Online (Sandbox Code Playgroud)

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

如何在 Ubuntu 中禁用服务?

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

update-rc.d avahi-daemon disable
Run Code Online (Sandbox Code Playgroud)

但它抱怨:

System start/stop links for /etc/init.d/avahi-daemon do not exist
Run Code Online (Sandbox Code Playgroud)

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

# 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"
Run Code Online (Sandbox Code Playgroud)

这是这样的:

/usr/sbin/avahi-daemon
Run Code Online (Sandbox Code Playgroud)

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

find /etc -type f -name '*avahi*' -perm -u+x
Run Code Online (Sandbox Code Playgroud)

以为我会在/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
Run Code Online (Sandbox Code Playgroud)

好像这个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`)
Run Code Online (Sandbox Code Playgroud)

基于快速浏览,它也不会使用太多 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
Run Code Online (Sandbox Code Playgroud)

小智 23

sudo systemctl disable avahi-daemon
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu Gnome 15.10 上为我工作

  • 您也可以运行“sudo systemctl stop avahi-daemon”来立即停止它。这是问题的真正答案。 (2认同)

Tum*_*oid 22

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

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


小智 10

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

apt-get remove avahi-daemon
Run Code Online (Sandbox Code Playgroud)

  • @Mxx firefox 只是触发重新启动 Avahi 的套接字。我也必须卸载它才能使 wget 和 curl 不使用它。 (2认同)

Kho*_*Phi 5

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

所以,只需注释掉respawnin/etc/init/avahi-daemon.conf

杀死那个进程总是失败,所以无法airmon-ng check通过。评论重生,它杀死了我,再也不会回来追捕我了。