Повторно приєднайтеся до втраченого сеансу X11


27

Я використовую переадресацію X11 sshдля запуску програм Linux у вікні Windows, і коли мережа падає, вона втрачає все, що працювало. Чи є щось подібне screenдля X11?


Уточнити. Чому б просто не використовувати screen? Або XVNC? Ви запускаєте екран на машині Linux, і коли ваша мережа падає, підключіться знову та використовуйте screen -DRдля повторного приєднання сеансу.
nix

@nix Це буде працювати для додатків X?
Майкл Мрозек

2
@nix Я не думаю, що screenпрацює для програм gui.
Абдулла Джибалі

Звичайно, екран вимагатиме запуску з xterm.
nix

Відповіді:


32

Xpra або вилка Xpra стверджують, що саме це:

Так що в основному це екран для віддалених додатків X.

Я не використовував його деякий час, але він спрацював досить добре, коли спробував. Ви запускаєте сервер на віддаленій машині:

[remote] $ xpra start :13

Потім ви підключаєтесь до сервера з локальної машини:

[local] $ xpra attach ssh:remote:13

А тепер все, що відображається на дисплеї X 13 на віддаленій машині, з’явиться локально:

[remote] $ DISPLAY=:13 xeyes

4
Також є WinSwitch , який на перший погляд схожий на те, що він інтегрує xpra та інше супутнє програмне забезпечення.
Жил 'SO- перестань бути злим'

6

Ви шукаєте VNC . Принцип дещо схожий з екраном: ви запускаєте сервер VNC ( SCREENпроцес зворотного зв’язку ) та клієнт VNC ( screenпроцес переднього плану ). Сервер VNC - це сервер X, тому на ньому можна запускати X програми.

Запустіть сервер VNC у вікні Linux та клієнт у вікні Windows. У вас є кілька варіантів реалізації; одна з можливостей - TightVNC . TightVNC є у багатьох дистрибутивах Linux (якщо він не у вашому, або встановіть його, або виберіть іншу реалізацію), і є клієнт Windows.

Якщо ваші дві машини не дуже близькі в мережі - якщо між ними є брандмауер або є небезпека підслуховувача - вам доведеться тунелювати трафік VNC через ssh. Перенесіть ssh вперед локального порту 5900 до віддаленого порту 5900 (5900 відповідає дисплею :0, використовуйте 5901 для :1тощо).


4

Насправді, ви можете переслати X у screen. Єдине , що потрібно зробити , це налаштувати $DISPLAYв screenвікні , так що це одне і те ж з боку від нього.

Порядок

після ssh -Xвведіть у віддалену машину, введіть

$ echo $DISPLAY

і зазвичай скопіюйте результат localhost:N.0. Потім введіть screenу місцевому screenвікні

$ export DISPLAY=localhost:N.0

Після цього запустіть будь-яку Xнеобхідну програму у вікні екрана.

ПРИМІТКА: для кожного screenвікна змінні середовища не залежать. Тому для кожного вікна вам може знадобитися налаштувати його окремо.

Список літератури


1
Привіт Чонг, ласкаво просимо на unix.SE. Оскільки подробиці рішення, яке ви посилаєте, прості, то краще переписати їх явно тут. Таким чином, відповідь зберігається, якщо щось станеться з публікацією на askubuntu.com. Звичайно, це гарна ідея, щоб посилання також було присутнім, оскільки воно допомагає в джерелі вашого матеріалу.
вр.

2
Я спробував це рішення, але не можу закрити сеанс ssh, не вбивши запущений додаток X. Це якимось чином перемагає її ціль ... Як я повинен відключитися від віддаленого хоста, залишаючи віддалений додаток запущеним?
Тонін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.