Як я можу відключити 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)
a ps -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`)
і він не використовує занадто багато циклів процесора, грунтуючись на швидкому погляді на htop
.
Я написав цей однолінійний лайнер, щоб побачити, чи не працює він утилітою процесора протягом однієї хвилини, і це ніколи не відбувається, але дайте мені знати, чи є кращі способи перевірити це:
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
A
за зусилля!