У меня было устройство под управлением Ubuntu 12.04 LTS, его экран завис. Обычно я просто запрыгнул на доступный tty, т.е. Ctrl- Alt- F1и выполнил команду /etc/init.d/lightdm restart
или service lightdm restart
. Это, однако, убивает все, что у меня есть открыто. Как мне избежать этого?
12
Ответы:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Согласно комментарию Брендена, это может быть устаревшим и больше не работать с более новыми версиями Ubuntu. Также, пожалуйста, будьте готовы, что вы можете потерять свои открытые окна.
Теперь я получил его для Unity (я просто заменил оболочку GNOME на Unity без выхода из системы или закрытия окон):
DISPLAY=:0
так, чтобы программы знали, на каком порту найти X-серверexport DISPLAY
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.источник