问题描述
在htop中,我杀了Nautilus,并且在一秒之内,它又回来了,有一个新的PID!
重新启动的Nautilus显示在进程列表中,但是在我手动启动Nautilus之前没有GUI …我听说提到Nautilus与桌面协同工作……也许这就是原因(?)。
有没有某种”watchdog”程序关注一些distro-critical程序?监控Nautilus似乎不是Linux内核问题,所以我只是想知道这里发生了什么?
最佳解决方案
Gnome使用会话管理器(gnome-session
)来跟踪它需要做什么。它负责启动整个会话,所有子进程,恢复状态并在您注销时保存它。
GNOME provides tools to allow your application to run smoothly from session to session. Users can log out with running applications and have those applications fully restored when they log back in. – from the Gnome Documentation Library
除此之外,会话管理器试图让它的Nautilus实例运行。 Nautilus必须向会话管理员注册 – 默认情况下会这样做;当然,有一个命令行选项可以禁用它:
nautilus --sm-disable
您可以通过运行来终止正在运行的Nautilus进程:
killall -9 nautilus
次佳解决方案
正如其他人所提到的,gnome-session
自动重新生成nautilus
过程。它也适用于gnome-panel
和gnome-wm
(它依次启动用户配置的窗口管理器,通常为compiz
或metacity
)。
可以通过desktop > gnome > session > required_components
gconf键自定义此行为。
如果您希望在没有GNOME面板的情况下运行并仅使用Docky或AWN,则编辑这些值非常有用。
第三种解决方案
gnome-session
负责重生 nautilus 。作为进程树中的父进程,没有其他进程可以重新生成它。
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
第四种方案
奇帕卡& andrewsomething都很接近…… 🙂
/desktop/gnome/session/required_components_list
键列出了应由gnome-session
监视的”components”,并在退出时自动重启。 GNOME 2的默认值类似于[windowmanager,panel,filemanager]
。
如果要通过此机制启动(重新)启动nautilus(或您配置的任何”filemanager component”),可以将值更改为[windowmanager,panel]
。 (您可以在登录期间通过将其添加到会话start-up程序列表中来启动它,但它不会再自动重新启动。)
在/desktop/gnome/session/required_components
下,在具有组件名称的密钥中定义了为每个组件启动的应用程序(使用什么命令行参数)。此处列出的组件可能多于/desktop/gnome/session/required_components_list
键中使用的组件。
现在,在nautilus的情况下,默认情况下当它没有运行时它会在后台启动,如果设置了/apps/nautilus/preferences/show_desktop
键,它也会显示桌面。也可以告诉nautilus使用命令行参数表现不同。
第五种方案
Nautilus正在重新启动,因为它已经绘制了桌面。输入
gconftool-2 --type bool --set /apps/nautilus/preferences/show_desktop False
在一个终端,它停止这样做,然后杀死后不应该回来。