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