Saya mencoba menjalankan berbagai aplikasi Gnome melalui X11 Forwarding dan SSH. Beberapa aplikasi akan menyebabkan aplikasi 'dbus-launch' muncul pertama kali. Masalahnya adalah bahwa peluncuran dbus tidak menutup ketika aplikasi X keluar, dan karena itu harus dibunuh sebelum sesi SSH dapat ditutup dengan benar.
Saya berasumsi masalahnya adalah bahwa aplikasi X / Gnome tidak dapat terhubung dengan daemon bus pesan utama dan karena itu harus meluncurkan salinannya sendiri? Bagaimana saya bisa memperbaikinya? Atau apa yang saya lewatkan?
Berikut ini sebuah contoh. Saya telah mengaktifkan X11 Forwarding, semua sepertinya berfungsi dengan baik.
[me@host ~]$ gnome-calculator &
[1] 4803
(di sini program gcalctool diluncurkan dan ditampilkan ke server X saya hapus (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
(sekarang, setelah menutup aplikasi gcalctool di sesi jarak jauh)
[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
Perhatikan bahwa peluncuran dbus masih aktif. Dan bagian terburuknya, ini mencegah koneksi SSH dari menutup dengan benar sampai terbunuh.
Perhatikan bahwa daemon pesan lebar sistem sedang berjalan, seperti yang dapat dilihat di sini:
[me@host ~]$ ps ax
4696 ? Ssl 0:00 dbus-daemon --system
Apa yang kulewatkan di sini? Saya belum pernah melihat perilaku ini sebelumnya. Agaknya, saya hanya pernah melihat aplikasi yang dapat terhubung ke daemon bus pesan tanpa hambatan? Saya telah mencari di / etc / dbus-1 untuk jawaban, tetapi tidak tahu harus mencari apa.
Terima kasih sebelumnya atas bantuannya.
[EDIT]
Oke, saya menyadari bahwa saya mengalami masalah yang sama. Sepertinya ini adalah perilaku yang cukup umum, tetapi tanpa solusi yang baik. Saya mengalami hang SSH karena dbus-launch masih aktif di tty. Tapi sepertinya tidak ada cara yang baik untuk membuat peluncuran dbus terjadi dengan tenang.
Melihat /etc/X11/xinit/xinitrc.d/00-start-message-bus.sh memberikan beberapa petunjuk tentang apa yang seharusnya terjadi dengan sesi X "normal". Ini tentu saja tidak berfungsi ketika hanya menjalankan aplikasi X ke server X jarak jauh.
Sebagai solusi sementara, saya telah menambahkan ini ke .bash_logout saya:
# ~/.bash_logout
pkill -u $USER -t `tty | cut -d '/' -f 3,4` dbus-launch
Ini akan memungkinkan sesi SSH untuk menutup, tetapi rasanya kumal. Apakah ada solusi yang lebih baik di luar sana? Apa cara yang tepat untuk menjalankan aplikasi X11 jarak jauh tanpa dbus menghalangi?
Saya ingin tahu apakah masalahnya tidak terjadi karena sesi dbus yang tidak diketahui atau tidak aktif.
Memang ketika sesi SSH terbuka, itu tidak meluncurkan sesi dbus. Beberapa program mungkin meluncurkannya, tetapi kemudian sesi tidak mengetahuinya (karenanya tidak dapat menutupnya).
Tidak mengetahui tentang sesi dbus juga berarti bahwa program yang menggunakan dbus tetapi tidak meluncurkannya sendiri akan memiliki masalah.
bagian dbus adalah per mesin dan per tampilan X11. Info mereka disimpan dalam $ HOME / .dbus / session-bus / - namun, proses yang dirujuk di sana mungkin ditutup, sehingga diperlukan pemeriksaan tambahan untuk menentukan apakah meluncurkan dbus diperlukan atau tidak. Kemudian, variabel yang ada untuk diekspor ke sesi.
Maka itu bekerja seperti pesona :)
Saya menaruh yang berikut ini di file .bash_profile saya:
Catatan: hostnamectl adalah bagian dari systemd dan memungkinkan untuk mengambil mesin-id dbus-launch menampilkan variabel yang kita inginkan; dengan menggunakan
export $(dbus-launch)
kami mengambil output dari peluncuran -bus dan mengekspor variabeljika Anda ingin itu dilakukan pada sessio non-interaktif (misalnya ketika menjalankan perintah dari ssh) cobalah memasukkannya di.
sumber
Saya memiliki masalah yang sama ketika mencoba menjalankan perintah X jarak jauh, dan membuat sesi keluar setelah alat X keluar.
Jadi saya ingin lari
Tetapi harus menggunakan:
Setelah menutup firefox, ini juga akan menutup sesi ssh.
Perbarui :
Ini sepertinya membiarkan banyak proses dbus-daemon berjalan di server, jadi ini tidak optimal, menambahkan --exit-dengan-sesi pada kedua akun tidak membantu, karena ini mengembalikan perilaku asli
pembaruan 2 : ini berfungsi ketika saya menggunakan tanda kutip tunggal, (seperti yang disarankan oleh @lobo) dan menambahkan
kill -TERM $DBUS_SESSION_BUS_PID
untuk membunuh proses dbus-daemon yang tersisa, seperti yang diusulkan oleh Holgr Joukl dari https://blog.dhampir.no/content/how- untuk-mencegah-ssh-x-dari-menggantung-saat-keluar-saat-dbus-digunakan )sumber
dbus-launch
tidak dijalankan secara lokal ), tetapi kemudian berhasil. Terima kasih!