Pasang kembali sesi X11 yang hilang

27

Saya menggunakan penerusan X11 sshuntuk menjalankan aplikasi Linux di kotak Windows saya, dan ketika jaringan turun, ia kehilangan semua yang sedang berjalan. Apakah ada yang mirip dengan screenuntuk X11?

Abdullah Jibaly
sumber
Menjelaskan. Kenapa tidak pakai saja screen? Atau XVNC? Anda menjalankan layar pada mesin Linux dan ketika jaringan Anda jatuh, sambungkan kembali dan gunakan screen -DRuntuk memasang kembali sesi.
nix
@nix Akankah itu berfungsi untuk aplikasi X?
Michael Mrozek
2
@nix Saya tidak berpikir itu screenberfungsi untuk aplikasi gui.
Abdullah Jibaly
Tentu saja, layar perlu dijalankan dari xterm.
nix

Jawaban:

32

Xpra atau garpu Xpra mengklaim persis seperti itu:

Jadi pada dasarnya layar untuk aplikasi X jarak jauh.

Saya belum menggunakannya dalam beberapa saat, tetapi itu bekerja dengan cukup baik ketika saya mencobanya. Anda memulai server pada mesin jarak jauh:

[remote] $ xpra start :13

Kemudian Anda melampirkan ke server dari mesin lokal Anda:

[local] $ xpra attach ssh:remote:13

Dan sekarang apa pun yang ditampilkan pada tampilan X 13 pada mesin jarak jauh akan muncul secara lokal:

[remote] $ DISPLAY=:13 xeyes
Michael Mrozek
sumber
4
Ada juga WinSwitch , yang sekilas terlihat seperti mengintegrasikan xpra dan perangkat lunak terkait lainnya.
Gilles 'SO- stop being evil'
6

Anda sedang mencari VNC . Prinsipnya agak mirip dengan layar: Anda menjalankan server VNC ( SCREENproses backgound ), dan klien VNC ( screenproses latar depan ). Server VNC adalah server X, sehingga Anda dapat menjalankan aplikasi X di dalamnya.

Jalankan server VNC pada kotak Linux dan klien di kotak Windows. Anda memiliki beberapa implementasi untuk dipilih; satu kemungkinan adalah TightVNC . TightVNC ada di banyak distribusi Linux (jika tidak ada dalam Anda, instal atau pilih implementasi yang berbeda), dan ada klien Windows.

Jika kedua mesin Anda tidak terlalu dekat pada jaringan - jika ada firewall atau risiko penyadap di antara mereka - Anda harus menyalurkan lalu lintas VNC melalui ssh. Minta ssh meneruskan port lokal 5900 ke port jarak jauh 5900 (5900 sesuai dengan tampilan :0, gunakan 5901 untuk :1, dll.).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
4

Sebenarnya, Anda bisa meneruskan X ke screen. Satu-satunya hal yang harus dilakukan adalah mengatur $DISPLAYdi screenjendela sehingga sisi luarnya sama.

Prosedur

setelah ssh -Xmasuk ke mesin remote, ketik

$ echo $DISPLAY

dan salin hasilnya, biasanya localhost:N.0. Lalu masukkan screen, di screenjendela lokal ,

$ export DISPLAY=localhost:N.0

Setelah ini, jalankan Xprogram apa pun yang diperlukan dalam jendela layar yang akan dilakukan.

CATATAN: untuk setiap screenjendela, variabel lingkungan independen. Jadi untuk setiap jendela, Anda mungkin perlu mengaturnya secara terpisah.

Referensi

Chong
sumber
1
Hai Chong, selamat datang di unix.SE. Karena rincian solusi yang Anda tautkan sederhana, lebih baik untuk menulis ulang secara eksplisit di sini. Dengan cara ini jawabannya dipertahankan jika terjadi sesuatu pada posting di askubuntu.com. Tentu saja, itu juga merupakan ide bagus untuk menjaga tautan tetap ada karena itu membantu untuk sumber materi Anda.
drs
2
Saya mencoba solusi ini, tetapi saya tidak dapat menutup sesi ssh saya tanpa mematikan aplikasi X yang sedang berjalan. Ini entah bagaimana mengalahkan tujuan itu ... Bagaimana saya harus memutuskan sambungan dari host jarak jauh meninggalkan aplikasi jarak jauh berjalan?
Tonin