Долго искал, как выйти из X через консоль, и в мануалах ничего не мог найти. Почему-то это нигде толком не описано. Хотя, я думаю, завершить X на другой машине удаленно, имея под рукой только консоль/удаленный терминал, возникала не у меня одного.
И оказалось, что какого-то единственного универсального способа нет.
Runlevel или уровень запуска — это программная конфигурация системы, которая позволяет запускать только выбранную группу процессов на определенном этапе. Их до 10, но нас интересует уровень 3 — многопользовательский (консольный) режим, и уровень 5 (в Slackware — 4), многопользовательский графический режим, в котором X-server запускается по умолчанию.
Если система находится на уровне 4 (5), то способы как либо пришибить иксы могут не сработать, иксы перезапустятся. С уровня 3 можно запустить X-сервер вручную, для этого надо в консоли ввести (обычно) startx
. Если система на уровне 3, то иксы сравнительно легко прибить (см. ниже).
Визуально уровень запуска обычно определить легко. 3 — после загрузки ОС будет консольное приглашение ввести логин и пароль, например:
Welcome to Linux 4.4.14-smp (tty1)
wolfsсhanze login:
На уровне 4 (5) на экране будет предложение ввести логин/пароль, но уже в иксовой форточке.
Правда, некоторые не очень популярные дистрибутивы хитрят. Например, Puppy Slacko запускается на уровне 3, а X-сервер вызывает уже из своих инициализационных скриптов.
Можно проверить runlevel и в консоли/терминале:
runlevel
Вывод:
N 3
или
who -r
Вывод:
run-level 3 2020-01-28 07:12 last=S
Неверное, самый универсальный способ завершить работу X-server на лету и через консоль, это переключить runlevel. Команда должна быть выполнена от root
.
— Для Slackware:
init 3
— Для дистрибутивов с systemd:
systemctl isolate runlevel3.target
Вернуться в иксы.
Для Slackware:
init 4
— Для дистрибутивов с systemd:
systemctl isolate graphical.target
— Для Slackware:
1. Под root
запускаем mc
и идем в /etc
2. Ищем там файл inittab
и открываем его в редакторе.
3. Ищем строчки:
# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:
Они обычно в начале файла.
4. Меняем 4
на 3
и сохраняем файл. Если надо X при старте — меняем 3
на 4
. Если что, обычно в файле есть комментарий-подсказка (на буржуйском).
— Для дистрибутивов с systemd:
Чтоб X был выключен по умолчанию:
systemctl set-default runlevel3.target
Чтоб X по умолчанию был включен:
systemctl set-default multi-user.target
Опять же, повторюсь, стопроцентно это сработает только если X-server запущен вручную (или через скрипты), когда система находится в runlevel 3.
— Придушить X-сервер совсем:
killall Xorg
— Более аккуратно придушить иксы (для систем с systemd). Надо отправить команду завершения оконному менеджеру.
В общем виде:
systemctl stop display-manager.service
Вместо display-manager.service
подставляем свой оконный менеджер (наверное, не все поддерживают, но у меня systemd нет, так что не тестировал):
systemctl stop gdm
— Способ для xfce
:
xfce4-session-logout --logout --display :0.0
Корректно срабатывает только с локальной консоли. Удаленно может не работать.
В некоторых системах до сих пор работает старый способ переключиться в голую консоль, не завершая X-сервер.
Для этого надо нажать Ctrl+Alt+F2…F6 и вам откроется чистый терминал. На Ctrl+Alt+F7 обычно сидят сами иксы, и таким образом, можно к ним вернуться. А первый терминал (Ctrl+Alt+F1) иксы занимают под служебные нужды. В некоторых системах для выхода из иксов срабатывает такой способ:
1. Переключиться в первую консоль (Ctrl+Alt+F1)
2. Нажать Ctrl+C/Ctrl+Break
В некоторых системах для выхода из иксов может сработать комбинация Ctrl+Alt+Backspace
В системах, запускающихся в графическом runlevel по умолчанию, это можно использовать для перезагрузки графического окружения, если X зависли (как soft-restart в Windows 98). Так же можно использовать и команду killall Xorg