Что заставляет Наутилус перезапускаться всякий раз, когда я его убиваю?

28

В htop я убиваю Наутилуса, и через секунду он возвращается с новым PID!

Перезапущенный Nautilus отображается в списке «Процессы», но не имеет графического интерфейса, пока я не запускаю Nautilus вручную ... Я слышал упоминание о том, что Nautilus работает в непрерывном режиме с рабочим столом ... возможно, в этом причина (?).

Есть ли какая-то программа «сторожевого таймера», которая следит за некоторыми дистрибутивными программами? Наблюдение за Nautilus не похоже на проблему с ядром Linux, поэтому мне просто интересно, что здесь происходит?

Peter.O
источник

Ответы:

20

Gnome использует Session Manager ( gnome-session), чтобы отслеживать, что ему нужно делать. Он отвечает за запуск всего сеанса, всех подпроцессов, восстановление состояния и сохранение его при выходе из системы.

GNOME предоставляет инструменты, позволяющие вашему приложению бесперебойно работать от сеанса к сеансу. Пользователи могут выходить из системы с запущенными приложениями и полностью восстанавливать эти приложения при повторном входе в систему - из библиотеки документации Gnome

Помимо прочего, менеджер сеансов пытается сохранить работающий экземпляр Nautilus. Наутилус должен зарегистрироваться у менеджера сессии для этого - что он делает по умолчанию; естественно, есть опция командной строки, чтобы отключить его:

nautilus --sm-disable

Вы можете убить запущенный процесс Nautilus, запустив:

killall -9 nautilus

Стефано Палаццо
источник
Спасибо, Стефано. Вы дали хороший обзор, и это то, что мне было нужно, но, как это часто бывает, объяснение может вызвать другой вопрос (-ы) ... Я сейчас упомяну один: я побежал nautilus --sm-disable(пользователь и Судо). Возможно, это отключило соединение с менеджером сеансов, но менеджер сеансов продолжал правильно перезапускать nautilus (при этом «nautilus --sm-disable» отображается в списке процессов) ... Таким образом, этот параметр вступает в силу, только если он применяется при запуске сеанса (по сравнению с серединой сеанса), и есть ли серьезные последствия при отключении? (Я думаю, что автонастройка исчезнет, ​​но ...?
Peter.O 12.12.10
Ну, nautilus --sm-disableв недокументированной функции . Так что сложно сказать. Но имейте в виду, что nautilus будет перезапущен, как только он будет убит , вам придется запустить его первый экземпляр с этим параметром. killall nautilus && nautilus --sm-disableне сработает Команда не отключает функцию для запущенных экземпляров nautilus. Вы могли бы попытаться объединить мой ответ и ответ от Andrewsomething. ;-)
Стефано Палаццо
использовать killall -9 nautilus.
RolandiXor
nautilus --sm-disableне работает в Ubuntu 15.10 ( Unknown option --sm-disable). Также нет сессии Гнома.
Hubro
11

Как уже упоминали другие, автоматически gnome-sessionзапускает nautilusпроцесс. Это также делает для gnome-panelи gnome-wm(который в свою очередь запускает оконный менеджер, настроенный пользователем, обычно compizили metacity).

Это поведение настраивается с desktop > gnome > session > required_componentsпомощью ключей gconf.

обязательные_компоненты ключи gconf

Редактирование этих значений может быть полезно, если вы хотите, например, запустить без панели GNOME и использовать только Docky или AWN.

andrewsomething
источник
6

gnome-sessionотвечает за возрождение наутилуса. Как его родительский элемент в дереве процессов, нет другого процесса, который мог бы его возродить.

ps -eaH показывает иерархическое дерево процессов, приведенное здесь:

    1 ?        00:00:00 init
 1113 ?        00:00:00   gdm-binary
11391 ?        00:00:00     gdm-simple-slav
11396 tty8     00:00:13       Xorg
11465 ?        00:00:00       gdm-session-wor
11629 ?        00:00:00         gnome-session
11746 ?        00:00:02           nautilus
MSW
источник
Спасибо msw ... Это довольно информативный список (-eaH).
Peter.O
5

Chipaca и Andrewsomething оба близки ... :)

В /desktop/gnome/session/required_components_listключевые списки «компоненты» , которые должны быть проверены gnome-session, и перезапущен автоматически , когда они выходят. Значением по умолчанию для GNOME 2 является что-то вроде [windowmanager,panel,filemanager].

Если вы хотите предотвратить запуск (пере) запуска этим механизмом nautilus (или любого другого «компонента filemanager», который вы настроили), вы можете изменить значение на [windowmanager,panel]. (Вы можете запустить его во время входа в систему, добавив его в список программ запуска сеансов, но он больше не будет перезапущен автоматически.)

В каком приложении (с какими параметрами командной строки) запускается каждый компонент, определяется /desktop/gnome/session/required_componentsв ключе с именем компонента. Возможно, что здесь указано больше компонентов, чем используется в /desktop/gnome/session/required_components_listключе.

Теперь, в случае nautilus, по умолчанию, когда он еще не запущен, он запускается в фоновом режиме, а если /apps/nautilus/preferences/show_desktopключ установлен, он также показывает рабочий стол. Также можно указать nautilus вести себя иначе с параметрами командной строки.

Janc
источник
Это правильный ответ.
Трэвис Уоткинс
2

Наутилус перезапускается, потому что он у вас нарисован на рабочем столе. Войти

gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop False

в терминале, чтобы он прекратил это делать, и он не должен возвращаться после убийства.

Chipaca
источник
Эта show_desktop = Falseопция не препятствует перезагрузке Nautilus ... поэтому я думаю, что Nautilus должен делать больше за кулисами, чем просто ... Кстати, мне нравится эта опция, так как я ничего не держу на рабочем столе, и это раздражает, когда Screenshot сохраняет свои изображения там (кажется, что это никак не может изменить это) .... Также просто заметил еще один вариант, который мне действительно нравится : show_advanced_permissions True... Спасибо :)
Peter.O
0

в общем делать:

gconftool-2 -s -t bool /desktop/gnome/background/draw_background false
gconftool-2 -s -t bool /apps/nautilus/preferences/show_desktop false

а также

sudo gedit /usr/share/applications/nautilus.desktop

изменить на:

X-GNOME-AUTORESTART = ложь

(нашел его по адресу: https://bbs.archlinux.org/viewtopic.php?id=119254 )

вот и все...

O ...
источник