Я пытаюсь запустить различные приложения Gnome через X11 Forwarding и SSH. Некоторые приложения будут вызывать приложение «dbus-launch» в первую очередь. Проблема в том, что dbus-launch не закрывается при выходе из приложения X и, следовательно, должен быть уничтожен до того, как сеанс SSH может быть правильно закрыт.
Я предполагаю, что проблема в том, что приложения X / Gnome не могут соединиться с главным демоном шины сообщений и поэтому должны запускать свою собственную копию? Как я могу это исправить? Или чего мне не хватает?
Вот пример. У меня включена переадресация X11, вроде все работает нормально.
[me@host ~]$ gnome-calculator &
[1] 4803
(здесь программа gcalctool запускается и отображается на моем удаленном X-сервере (Xming))
[me@host ~]$ ps
PID TTY TIME CMD
4706 pts/0 00:00:00 bash
4803 pts/0 00:00:00 gnome-calculator
4807 pts/0 00:00:00 dbus-launch
4870 pts/0 00:00:00 ps
(теперь, после закрытия приложения gcalctool в удаленном сеансе)
[me@host ~]$ ps
PID TTY TIME CMD
4706 pts/0 00:00:00 bash
4807 pts/0 00:00:00 dbus-launch
4898 pts/0 00:00:00 ps
Обратите внимание, что dbus-launch все еще активен. И что хуже всего, это предотвращает правильное закрытие соединения SSH, пока оно не будет уничтожено.
Обратите внимание, что работает системный демон сообщений, как можно увидеть здесь:
[me@host ~]$ ps ax
4696 ? Ssl 0:00 dbus-daemon --system
Что мне здесь не хватает? Я никогда не видел такого поведения раньше. Предположительно, я когда-либо видел приложения, которые могут беспрепятственно подключаться к демону шины сообщений? Я искал ответы в / etc / dbus-1, но не знаю, что искать.
Заранее спасибо за помощь.
[РЕДАКТИРОВАТЬ]
Хорошо, я понимаю, что у меня общая проблема. Кажется, это довольно распространенное поведение, но без хорошего решения. Я испытываю зависание SSH, потому что dbus-launch все еще активен в tty. Но, похоже, нет хорошего способа, чтобы запуск dbus происходил тихо.
Взглянув на /etc/X11/xinit/xinitrc.d/00-start-message-bus.sh, вы получите некоторое представление о том, что должно произойти с "нормальным" сеансом X. Это, конечно, не работает, когда вы просто вызываете X-приложение на удаленный X-сервер.
В качестве временного решения я добавил это в свой .bash_logout:
# ~/.bash_logout
pkill -u $USER -t `tty | cut -d '/' -f 3,4` dbus-launch
Это позволит закрыть сессию SSH, но это кажется грязным. Есть ли лучшие решения там? Как правильно запускать удаленные приложения X11 без использования dbus?