Linux переключение между сессиями

Как пользоваться loginctl

Утилита loginctl входит в набор утилит systemd для управления системой. Она позволяет управлять текущими сессиями пользователей, смотреть список активных пользователей, блокировать экран или вообще завершать сессии, завершать процессы пользователей и многое другое.

Раньше для всего этого приходилось использовать несколько утилит и конфигурационных файлов, а теперь всё находится в одном месте. В этой статье мы рассмотрим как пользоваться loginctl, также для чего эта утилита может пригодится.

Основы loginctl

Утилита loginctl позволяет взаимодействовать со всем, что касается авторизации пользователей. В официальной документации сказано, что loginctl предназначена для контроля менеджера входа в систему systemd-logind. Утилита оперирует такими сущностями:

  1. Пользователь (user) — любой пользователь зарегистрированный в системе;
  2. Сессия (session) — авторизация пользователя в системе, каждый вход, за исключением sudo и su, считается новой сессией. Вы можете авторизоваться в нескольких TTY, по SSH или в графическом менеджере входа, это всё будут новые сессии;
  3. Место (seat) — эта концепция позволяет подключить к компьютеру несколько пар мышек, клавиатур, мониторов и использовать его несколькими пользователями одновременно. Обычно эта возможность не используется и утилита показывает только одно рабочее место.

А теперь, давайте посмотрим на синтаксис и доступные опции loginctl.

Синтаксис и опции loginctl

Синтаксис утилиты довольно простой:

$ loginctl опции команда аргументы

Вот основные команды, которые вы можете использовать:

  • list-sessions — вывести список сессий;
  • session-status — выводит состояние сессии, дату авторизации, информацию об основных запущенных сервисах и процессах;
  • show-session — выводит настройки сессии;
  • activate — позволяет переключится на указанную сессию;
  • lock-session — блокирует экран для указанной сессии, если ID сессии не задан, блокирует экран для текущей сессии;
  • unlock-session — разблокирует экран для указанной сессии;
  • kill-session — позволяет завершить сессию, или отправить определённый сигнал всем процессам;
  • terminate-session позволяет завершить указанную сессию;
  • list-users — выводит список пользователей, которые авторизованы в данный момент;
  • user-status — похоже на session-status, выводит дату авторизации, состояние и все запущенные процессы в виде дерева;
  • show-user — выводит информацию о пользователе и его текущей сессии без запущенных процессов;
  • terminate-user — завершает все сессии пользователя и все его процессы;
  • kill-user — отправляет сигнал всем процессам пользователя, по умолчанию будет отправлен SIGTERM;
  • list-seats — вывести список рабочих мест;
  • seat-status — выводит все процессы запущенные в рамках указанного рабочего места;
  • show-seat — выводит настройки рабочего места;
  • terminate-seat — завершить все процессы рабочего места.

Настойка рабочих мест не будет рассматриваться в этой статье, поэтому я даже не буду приводить команды для неё. Обрате внимание, что многие команды будут работать только для сессий с графическим интерфейсом, например session-lock или session-unlock не поддерживается для TTY или SSH сессий. А теперь давайте рассмотрим примеры.

Как пользоваться loginctl

1. Информация о сессиях

Вы можете посмотреть все активные сессии пользователей с помощью команды list-sessions:

В данном случае есть две сессии. Первая автовход в графический интерфейс, где запущен Gnome, вторая консольная сессия в TTY3. Здесь по каждой сессии отображается только её идентификатор, имя пользователя и TTY, в которой запущена сессия. Для того чтобы узнать более подробную информацию о каждой сессии используйте команду session-status. Вот так выглядит сессия в графическом интерфейсе:

Здесь видно когда была запущена сессия, её тип, в данном случае X11, а также основные процессы. Консольная сессия в TTY выглядит вот так:

Если вы хотите посмотреть настройки сессии без информации о процессах используйте команду show-session:

Для этой команды можно указать какую именно информацию вы хотите получить с помощью опции -p или —property. Например, для того чтобы получить только тип используйте такую команду:

loginctl show-session 1 —p Type

Для того чтобы получить только значение, без названия свойства используйте опцию —value:

loginctl show-session 1 —p Type —value

2. Информация о пользователях

Просмотр информации о пользователях работает примерно так же, как и просмотр информации о сессиях. Вы можете посмотреть список всех авторизованных пользователей с помощью такой команды:

С помощью команды user-status можно посмотреть подробности и каждом пользователе. Причём здесь будут именно подробности о его сессиях, а не данные пользователя:

В поле Sessions выводятся идентификаторы всех сессий пользователя, причём активная сессия будет отмечена звездочкой. Ниже выводятся Systemd сервисы запущенные от имени этого пользователя и запущенные ими процессы. По умолчанию список процессов может быть сокращён. Если вы хотите видеть все процессы используйте опцию -l или —full:

loginctl user-status 1000 —full

Для того чтобы утилита выводила всю информацию сразу без пагинации используйте опцию —no-pager:

loginctl user-status 1000 —no-pager

3. Переключение на другую сессию

Вы можете переключаться между сессиями используя графический интерфейс, например в Gnome или KDE. Но если вы хотите сделать это в терминале, то нужно использовать loginctl. Например, для того чтобы переключится в сессию с идентификатором 3 используйте команду:

А там вы можете переключится обратно. Это может быть удобнее чем переключаться по TTY с помощью горячих клавиш. Переключившись вы можете заблокировать экран для предыдущей сессии. Для этого используйте команду session-lock. Например:

4. Завершение сессий и процессов

С помощью команд kill-user или kill-session можно завершать процессы, которые запущены от имени пользователя или только определённой сессии. Эти команды работают аналогично консольной утилите kill, а значит с помощью них можно не только завершить процесс, но и отправить ему какой-либо сигнал. Если команде kill-session передать только идентификатор сессии, то она просто завершит её:

Но вы можете отправить какой-либо другой сигнал с помощью опции —signal. По умолчанию отправляется сигнал SIGTERM. Например, для того чтобы передать сигнал SIGKILL используйте команду:

loginctl kill-session 3 —signal SIGKILL

Аналогичная команда существует и для завершения всех процессов пользователя — kill-user. Кроме того есть команда session-terminate. Она делает практически то же самое только не позволяет выбирать сигнал и сразу же завершает все процессы:

loginctl terminate-session 3

5. Автозапуск серивсов пользователя

В Systemd есть поддержка сервисов, запускаемых от имени пользователя. Этими сервисами можно управлять без использования sudo и это довольно удобно. Окружения рабочего стола, например, Gnome уже давно используют эту возможность. Это такие сервисы, для управления которыми используется команда systemctl с опцией —user. Обычно, такие сервисы запускаются когда пользователь авторизуется в системе и останавливаются при выходе. Но иногда возникает необходимость сделать так, чтобы процессы пользователя запускались при загрузке системы, до его авторизации и не завершались с завершением сессии. Вы можете настроить это с помощью loginctl.

Например, для того чтобы это настроить для пользователя sergiy необходимо использовать такую команду loginctl:

loginctl enable-linger sergiy

Посмотреть состояние этого параметра можно с помощью команды user-status. Для отключения используйте команду disable-linger:

Выводы

В этой статье мы рассмотрели как пользоваться loginctl для просмотра информации о сессиях и авторизованных пользователях, а также как завершать сессии пользователей. Как видите утилита довольно проста в использовании и позволяет сделать всё в одном месте.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Как переключаться между TTY без использования функциональных клавиш в Linux

В этом кратком руководстве описывается, как переключаться между TTY без функциональных клавиш в Unix-подобных операционных системах.

Прежде чем идти дальше, мы посмотрим, что такое TTY.

Как упоминалось в ответе на форуме AskUbuntu, слово TTY появилось из TeleTYpewriter.

Еще в ранние дни Unix пользовательские терминалы, подключенные к компьютерам, были электромеханическими телепринтерами или телетайпами (tty вкратце).

С тех пор имя TTY продолжает использоваться для консолей с текстом. В настоящее время все текстовые консоли представляют собой виртуальные консоли, а не физические консоли. Команда TTY печатает имя файла терминала, подключенного к стандартному входу.

Переключение между TTY в Linux

По умолчанию в Linux есть 7 tty.

Они известны как tty1, tty2 … .. tty7.

От 1 до 6 tty – только командная строка.

7th tty – графический интерфейс (ваш рабочий стол X).

Вы можете переключаться между различными TTY, используя клавиши CTRL + ALT + Fn.

Например, чтобы переключиться на tty1, мы набираем CTRL + ALT + F1.

Вот как выглядит tty1 на сервере Ubuntu 18.04 LTS.

Если ваша система не имеет сеанса X, просто введите Alt + Fn. Вам не нужно использовать CTRL.

В некоторых версиях Linux (например, с Ubuntu 17.10 и далее) на экране входа в систему теперь используется виртуальная консоль 1.

Таким образом, вам нужно нажать CTRL + ALT + F3 до CTRL + ALT + F6 для доступа к виртуальным консолям.

Чтобы вернуться в среду рабочего стола, нажмите CTRL + ALT + F2 или CTRL + ALT + F7 на Ubuntu 17.10 и более поздних версиях.

До сих пор мы видели, что мы можем легко переключаться между TTY, используя CTRL + ALT + Function_Key (F1-F7).

Однако, если вы не хотите использовать клавиши функций по какой-либо причине, в Linux есть простая команда с именем chvt.

chvt описание

Команда «chvt N» позволяет вам переключиться на терминал N переднего плана, так же, как нажать CTRL + ALT + Fn.

Соответствующий экран создается, если он еще не существует.

Посмотрим, напечатаем ли система текущий tty:

Пример вывода с моего сервера Ubuntu 18.04 LTS.

Теперь перейдем к tty2. Для этого введите:

Помните, что вам нужно использовать «sudo» с командой chvt.

Теперь проверьте текущий tty с помощью команды:

Вы увидите, что tty теперь изменился.

Аналогичным образом, вы можете переключиться на tty3, используя «sudo chvt 3», tty4, используя «sudo chvt 4» и так далее.

Команда Chvt может быть полезна, когда какая-либо из ваших функциональных клавиш не работает.

Чтобы просмотреть общее количество активных виртуальных консолей, запустите:

$ fgconsole 2

Как вы можете видеть, в моей системе есть два активных VT.

Вы можете увидеть следующий нераспределенный виртуальный терминал, используя команду:

$ fgconsole --next-available 3

Виртуальная консоль не используется, если она не является консолью переднего плана, и никакой процесс не открывается для чтения или записи, и на ее экране не было выделено текста.

Чтобы избавиться от неиспользуемых VT, просто введите:

Вышеупомянутая команда освобождает память ядра и структуры данных для всех неиспользуемых виртуальных консолей.

Чтобы сказать проще, эта команда освободит все ресурсы, связанные с неиспользуемыми виртуальными консолями.

Для получения дополнительной информации см. Справочные страницы соответствующей команды.

Источник

Читайте также:  Find exe files in linux
Оцените статью
Adblock
detector