11

У меня было устройство под управлением Ubuntu 12.04 LTS, его экран завис. Обычно я просто перепрыгнул на доступный tty, то есть Ctrl- Alt- F1, и выполнил команду /etc/init.d/lightdm restart или service lightdm restart . Это, однако, убивает все, что у меня открыто. Как мне избежать этого?

1 ответ1

12

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Согласно комментарию Брендена, это может быть устаревшим и больше не работать с более новыми версиями Ubuntu. Также, пожалуйста, будьте готовы, что вы можете потерять свои открытые окна.

Теперь я получил его для Unity (я просто заменил оболочку GNOME на Unity без выхода из системы или закрытия окон):

  1. Перейти к tty1 [Ctrl]+[Alt]+[F1]
  2. Введите DISPLAY=:0 чтобы программы знали, на каком порту найти X-сервер.
  3. export DISPLAY
  4. unity --replace или gnome-shell --replace (вы также можете заменить GNOME-Shell на unity или Unity на GNOME-Shell)

Это работает, только если X-сервер или GNOME не заблокированы, а только Unity или GNOME-Shell.

Как это работает: связь между программами и X-сервером для отображения их пользовательского интерфейса работает через сетевой сокет. Обычно это "localhost: 0" short ": 0". Устанавливая переменную DISPLAY, программы знают, где найти X-сервер для связи с ним, поэтому программы отображаются на X-сервере на tty7, даже если программа работает на tty1.

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

PS: я просто описываю то, что я понимаю, поэтому, пожалуйста, отредактируйте и исправьте меня, если я ошибаюсь в некоторых моментах.

РЕДАКТИРОВАТЬ: для GNOME-Shell, есть еще один способ перезапустить его. После перехода на tty просто введите pkill -HUP gnome-shell , я не знаю, есть ли что-то подобное для Unity.

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