1

Я работал один X-сервер в течение нескольких дней. Сегодня из-за какого-то временного сбоя зависает. Множество приложений X - текстовые редакторы, веб-браузеры, графические приложения и т.д. - все еще работают и, вероятно, в порядке. X-сервер, похоже, испортился.

Я могу запустить новый сервер x в другом виртуальном терминале - ctrl-alt-F1, ctrl-alt-F2 и т.д. Первоначальный мертвый находится на ctrl-alt-F1 и сообщит DISPLAY =:0, если он может что-либо сделать. Я начал новые на ctrl-alt-F2, где DISPLAY =:1 и ctrl-alt-F3, где DISPLAY =:2.

До сегодняшнего события я не знал, что Linux может одновременно запускать более одного X-сервера и связывать их с такими vterms. Раньше это был F7, который имел X-сервер, или F5 много лет назад. Я использую Arch Linux, установлен свежую около месяца назад. Я не очень слежу за новостями X11 или Linux.

ВОПРОС: оригинальный сервер F1 показывает только черный экран с курсором. Курсор перемещается. Но приложения, которые появляются в "ps aux" и дают другие признаки жизни, кроме их GUI, я уверен, все еще работают.

ВОПРОС: есть ли какой-нибудь способ дать серверу F1 X11 пнуть, разбудить его, снять его, перезапустить, заставить его работать снова? Без потери существующих процессов GUI, конечно.

Если нет, то мой следующий вопрос - как заставить запущенный процесс, такой как GIMP, Kwrite и т.д., Не появляться на X-сервере DISPLAY =:0, чтобы он полностью присутствовал и работал на сервере:2. Но это отдельный вопрос, который был задан в другом месте. Прежде чем я попытаюсь разобраться с этим, я хотел бы посмотреть, смогу ли я восстановить оригинальный X-сервер.

1 ответ1

3

Если ваш X-сервер застрял, вы ничего не можете сделать. Ваша единственная ставка - убить приложения, надеясь, что приложение, которое заставило их зависнуть (как 3D-игра, застрявшая в бесконечном цикле, загружающем сервер), освобождает ресурсы, и оно снова начинает работать. Это может быть и менеджер компоновки, если вы используете его, так что вы можете убить его, перезапустить и посмотреть, поможет ли это (большинство современных DE делают это, и если вы используете Gnome, уничтожение оболочки приведет к уничтожению всей вашей сессии). Однако, скорее всего, сервер просто невозможно восстановить, если только вы не захотите углубиться в него с помощью gdb (вы не спросите здесь, можете ли вы это сделать).

Переходя к следующему вопросу, я почти уверен, что невозможно перенести приложения с X-сервера на другой:

  • Приложения с графическим интерфейсом обычно имеют больше, чем просто соединение с X-сервером. К ним может быть подключено несколько других ресурсов, в том числе связанных с видеокартой. Например: контексты OpenGL. Вы пытаетесь переместить приложение с двух локальных серверов, но на самом деле X11 - это сетевой протокол. Целевой X-сервер также может находиться на противоположной стороне земного шара с другим оборудованием и всем остальным.

  • Большинство приложений не планируют потерять соединение с X-сервером. Мне еще предстоит найти какое-либо приложение, которое даже обрабатывает потерянное соединение с сервером: большинство приложений просто аварийно завершают работу.

  • Перемещение приложения с X-сервера на другое может нарушить многие предположения, которые приложения делают при запуске, особенно в отношении того, что им доступно (версии OpenGL, X-версия, расширения). Обработка всех этих крайних случаев просто не стоит хлопот.

  • От Xorg просто не ожидается сбой, точно так же, как приложения не ожидают, что ядро умрет или сломается.

На самом деле существуют способы перемещения окон с одного X-сервера на другой, но это предполагает использование прокси-сервера X11, такого как Xdmx. Это единственное, что я смог найти, не обновлялось с 2004 года и имеет несколько проблем. Я бы не рассчитывал на настоящую работу.

Просто убить Xorg и перезапустить это, вероятно, ваше лучшее решение. Просто не забывайте часто сохранять свою работу!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .