Головна » Як користуватися Loginctl

Як користуватися Loginctl

Утиліта loginctl входить до набору утиліт systemd для керування системою. Вона дозволяє керувати запущеними сесіями користувачів, переглядати список активних користувачів, блокувати екран або взагалі завершувати сесії, завершувати процеси користувачів та багато іншого.

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


Зміст

Основи loginctl

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

  • Користувач (user) - будь-який користувач, зареєстрований у системі;
  • Сеанс (session) - активна авторизація користувача в системі. Кожен вхід, за винятком sudo та su, вважається новим сеансом. Ви можете авторизуватися в декількох TTY, через SSH або в графічному менеджері входу, і все це будуть нові сеанси;
  • Місце (seat) - ця концепція дозволяє підключити до комп'ютера декілька пар мишок, клавіатур, моніторів та використовувати його декількома користувачами одночасно. Зазвичай ця можливість не використовується і утиліта показує лише одне робоче місце.

А тепер давайте розглянемо синтаксис та доступні опції loginctl.

Синтаксис та параметри loginctl

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

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

Ось основні команди, які ви можете використовувати:

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

Налаштування робочих місць не буде розглядатися в цій статті, тому я навіть не наводитиму команди для цього. Зверніть увагу, що багато команд працюватимуть лише для сесій з графічним інтерфейсом, наприклад lock-session або unlock-session не підтримуються для TTY або SSH сесій. А тепер давайте розглянемо приклади.

Як користуватися loginctl

1. Інформація про сесії

Ви можете переглянути всі активні сесії користувачів за допомогою команди list-sessions:

loginctl list-sessions

У даному випадку є дві сесії. Перша - автовхід до графічного інтерфейсу, де запущено Gnome, друга - консольна сесія в TTY3. Тут для кожної сесії відображається лише її ідентифікатор, ім'я користувача та TTY, в якій запущено сесію. Щоб дізнатися більш детальну інформацію про кожну сесію використовуйте команду session-status. Ось так виглядає сесія в графічному інтерфейсі:

loginctl session-status 1

Тут видно коли була запущена сесія, її тип, у даному випадку X11, а також основні процеси. Консольна сесія в TTY виглядає ось так:

loginctl session-status 3

Якщо ви хочете переглянути налаштування сесії без інформації про процеси використовуйте команду show-session:

loginctl show-session 1

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

loginctl show-session 1 --p Type

Для того щоб отримати лише значення, без назви властивості використовуйте опцію --value:

loginctl show-session 1 --p Type --value

2. Інформація про користувачів

Перегляд інформації про користувачів працює приблизно так само, як і перегляд інформації про сесії. Ви можете переглянути список усіх авторизованих користувачів за допомогою такої команди:

loginctl list-users

За допомогою команди user-status можна переглянути подробиці про кожного користувача. Причому тут будуть саме подробиці про його сесії, а не дані користувача:

loginctl user-status 1000

У полі Sessions виводяться ідентифікатори всіх сесій користувача, причому активна сесія буде позначена зірочкою. Нижче виводяться Systemd сервіси, запущені від імені цього користувача, та запущені ними процеси. За замовчуванням список процесів може бути скорочений. Якщо ви хочете бачити всі процеси, використовуйте опцію -l або --full:

loginctl user-status 1000 --full

Для того щоб утиліта виводила всю інформацію одразу без розбиття на сторінки, використовуйте опцію --no-pager:

loginctl user-status 1000 --no-pager

3. Перемикання на іншу сесію

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

loginctl activate 3

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

loginctl lock-session 1

4. Завершення сесій та процесів

За допомогою команд kill-user або kill-session можна завершувати процеси, які запущено від імені користувача або тільки певної сесії. Ці команди працюють аналогічно до консольної утиліти kill, а отже за їх допомогою можна не тільки завершити процес, але й надіслати йому будь-який сигнал. Якщо команді kill-session передати тільки ідентифікатор сесії, то вона просто завершить її:

loginctl kill-session 3

Але ви можете відправити будь-який інший сигнал за допомогою опції --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 disable-linger sergiy

Висновки

У цій статті ми розглянули як користуватися loginctl для перегляду інформації про сесії та авторизованих користувачів, а також як завершувати сесії користувачів. Як бачите, утиліта досить проста у використанні та дозволяє зробити все в одному місці.

Creative Commons License
Стаття поширюється під ліцензією Creative Commons ShareAlike 4.0 при використанні матеріалу посилання на джерело обовязкове.

Залишити коментар