当前位置: 首页>>技术问答>>正文


如何禁用avahi-daemon?

, ,

问题描述

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


你可以在这里停止阅读。事实上,请做,除非你想教一个菜鸟一些Ubuntu。上面的问题应该足够清楚,以便得到回答。剩下的只是我呼吁一些更有条理的方式找到一个绕Ubuntu的方式。我可以或多或少地使用其他”UNIX-like”系统。

我是一名初学者,所以如果我采取无意义的行为,请考虑我每天的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)

ps -efww ef显示2个活性过程,均称为avahi-daemon,第一个avahi-daemonPPID确实是1,第二个过程只是第一个过程的孩子。 PPID = 1让我觉得这是auto-started。


可选:

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

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


无论如何,我似乎能够通过这个命令暂时停止这个”service”:

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中可被视为”executable file”的任何内容:

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 removeapt-get purge的情况下禁用它?

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

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

基于对htop的快速浏览,它也不会使用太多的CPU周期。

我写了这个one-liner,看看它是否在一分钟的时间内在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

最佳解决方法

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

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

次佳解决方法

sudo systemctl disable avahi-daemon

在Ubuntu Gnome 15.10上为我工作

第三种解决方法

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

apt-get remove avahi-daemon

第四种方法

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

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

杀死该进程总是失败,因此无法通过airmon-ng check。在评论重生时,它会杀死并且永远不会回来追捕我。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2940.html,未经允许,请勿转载。