- Как пользоваться loginctl
- Основы loginctl
- Синтаксис и опции loginctl
- Как пользоваться loginctl
- 1. Информация о сессиях
- 2. Информация о пользователях
- 3. Переключение на другую сессию
- 4. Завершение сессий и процессов
- 5. Автозапуск серивсов пользователя
- Выводы
- xRDP — how to view all running sessions
- 1 Answer 1
- You must log in to answer this question.
- Linked
- Related
- Hot Network Questions
- Subscribe to RSS
- Команда who Linux
- Синтаксис
- Примеры
- Заключение
Как пользоваться loginctl
Утилита loginctl входит в набор утилит systemd для управления системой. Она позволяет управлять текущими сессиями пользователей, смотреть список активных пользователей, блокировать экран или вообще завершать сессии, завершать процессы пользователей и многое другое.
Раньше для всего этого приходилось использовать несколько утилит и конфигурационных файлов, а теперь всё находится в одном месте. В этой статье мы рассмотрим как пользоваться loginctl, также для чего эта утилита может пригодится.
Основы loginctl
Утилита loginctl позволяет взаимодействовать со всем, что касается авторизации пользователей. В официальной документации сказано, что loginctl предназначена для контроля менеджера входа в систему systemd-logind. Утилита оперирует такими сущностями:
- Пользователь (user) — любой пользователь зарегистрированный в системе;
- Сессия (session) — авторизация пользователя в системе, каждый вход, за исключением sudo и su, считается новой сессией. Вы можете авторизоваться в нескольких TTY, по SSH или в графическом менеджере входа, это всё будут новые сессии;
- Место (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.
xRDP — how to view all running sessions
I am new to xRDP..and to Linux from the admin point of view.. I have installed xRDP and xfce4 desktop and I am able to connect with Microsoft RDP To my Ubuntu 14.04 x 64 bit desktop / server. My question is, how can I see (as administrator) all sessions that are currently running and disconnected ? Is there some solution for this ? something similar to the remote desktop manager of windows, That allows to see all sessions that are running and disconnected, and that can be managed by the administrator (log off, send a msg, disconnect etc.) I looked over the internet but didn’t find something like this. Thank you very much og11
1 Answer 1
You could try to use the xrdp-sesadmin command line. Reading around, it seems that this utility can be used to manage running xrdp session. I never tried this so I do not know if this would work for you.
You can also try to use the ps utility, from a terminal type something like this:
ps -ef | grep vnc ps -ef h | grep vnc | grep `whoami`
You must log in to answer this question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.7.17.43536
Ubuntu and the circle of friends logo are trade marks of Canonical Limited and are used under licence.
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Команда who Linux
Команда who – настоящая палочка-выручалочка, благодаря которой так легко раздобыть всю необходимую информацию о пользователях, когда-либо работающих за конкретным компьютером. Так как операционная система Linux является многопользовательской, она отслеживает сеансы всех юзеров сети (кто работал за ПК, время старта и окончания его сеанса и прочее). Большинство пользователей операционной системы Linux отзываются об этом инструменте положительно. Он прекрасно показывает себя на практике.
Синтаксис
Рассмотрим синтаксис.
- -a — читает файл /etc/utmp, включает все основные опции;
- -b — показывает дату и время загрузки операционной системы;
- -d — показывает зомби-процессы.
- -u — выводит активных пользователей.
- -s — выводит имя, терминальную сессию и время, данный параметр используется по умолчанию;
- -T — информация о терминальной сессии;
- -q — количество пользователей в системе в данный момент;
- -r — показывает уровень процесса init.
Обычно для выполнения команды who берется информация файла: «/etc/utmp».
Альтернативные файлы: «/etc/wtmp» и «/etc/inittab».
Примеры
Если не использовать опции и аргументы, на экране появятся данные по умолчанию, включающие в себя информацию об учетных записях (тех, кто подключен к системе). Чтобы ознакомиться с данными о пользователе, который изъявил желание обратиться к терминалу прямо сейчас («спросить» у системы о самом себе), необходимо использовать команду «who am i».
Для получения обширной информации о подключенных пользователей достаточно ввести команду в виде:
Каких-либо дополнительных указаний в этом случае не потребуется. Если использовать исключительно «who», данных будет сравнительно меньше. Детализировать этот запрос или нет – решать только вам. Смотрите по ситуации.
Время загрузки системы можно посмотреть по команде:
Впишите её в терминале и ознакомьтесь с результатами запроса.
Чтобы посмотреть «runinit» (текущий уровень запуска), впишите в команду соответствующую опцию. Это будет выглядеть так:
Опция -s не имеет особого смысла, поскольку она провоцирует вывод таких стандартных значений, как «Имя пользователя», «терминальная линия», «время начала/окончания сеанса». Эта информация доступна и без добавления каких-либо опций. Едем дальше.
С помощью аргумента -T можно узнать состояние терминальной сессии. На практике это выглядит следующим образом:
Для чего нужна информация о состоянии терминальной сессии? От её состояния зависят некоторые нюансы в работе пользователя. Обратите внимание на название любой сессии, отображенной в окошке терминала. Если рядом с ним указан значок «+», значит, пользователь может получать сообщения от других терминалов. Если такой возможности нет, рядом с названием сессии будет указан значок «-».
При неисправности линии появится вопросительный знак.
При необходимости узнать, сколько пользователей подключено к системе, вводится:
Чтобы посмотреть, кто из пользователей активен в данный момент времени, введите команду:
При добавлении опции -d отображаются зомби-процессы:
Важное примечание: при использовании опции -d нельзя увидеть поле EXIT в окне терминала. Оно появляется лишь при добавлении опции -а.
Заключение
Основная задача утилиты who заключается в получении информации о пользователях, подключенных к системе. Вторичная задача – сбор данных о терминальных сессиях, благодаря которым и происходит их подключение.
Благодаря выше предоставленным примерам команд вы тоже можете ощутить простоту отслеживания данных о user системы. Всего несколько нажатий клавиш – и ответы на вопросы найдены.