Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Выход из X через консоль (и желательно удаленно)

Долго искал, как выйти из X через консоль, и в мануалах ничего не мог найти. Почему-то это нигде толком не описано. Хотя, я думаю, завершить X на другой машине удаленно, имея под рукой только консоль/удаленный терминал, возникала не у меня одного.

И оказалось, что какого-то единственного универсального способа нет.

Проверить runlevel


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

Переключить runlevel


Неверное, самый универсальный способ завершить работу X-server на лету и через консоль, это переключить runlevel. Команда должна быть выполнена от root.

- Для Slackware:

init 3

- Для дистрибутивов с systemd:

systemctl isolate runlevel3.target

Вернуться в иксы.

Для Slackware:

init 4

- Для дистрибутивов с systemd:

systemctl isolate graphical.target

Переключить runlevel по умолчанию (при старте системы)


- Для 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

Подробнее почитать о runlevel


Runlevel в Unix/Linux Копия

Другие способы завершить X-сервер через консоль.


Опять же, повторюсь, стопроцентно это сработает только если 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

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2020/01/25/vyhod-iz-x-cherez-konsol-i-zhelatelno-udalenno/

Comments

Ctrl+Alt+Backspace -- убить иксы. Но у меня они после этого перезапускаются (Mint), так что смысл есть только если они зависли.

Да, про Ctrl+Alt+Backspace забыл. У меня выходит нормально, правда, я походу понял, почему у тебя перезагружается и по Ctrl+Alt+Backspace и по killall Xorg

Персональная благодарность за помощь в дополнении статьи.

Всегда пожалуйста.

Только не Ctrl+Alt+Esc, а Ctrl+Alt+Backspace.

Алсо, Ctrl+Alt+F2...F6 работает AFAIK много где, только не всегда выводит в честную консоль, т.е. в текстовый режим -- например, в том же минте тоже можно выйти в типа консоль, но режим видеокарты реально будет графический. Хотя, вероятно, это уже не иксы.

Блин, исправил