- [⬆ вверх]
- Cписок проверки знаний Linux для детей.md
- DEBTAP КАК ЗАСТАВИТЬ .DEB СЛУЖИТЬ ARCH'У.md
- Gpg генерация ключей.md
- Nmtui - настройка сети.md
- Punycode - как русский домен превратить в ASCII.md
- Systemd и что это такое..md
- Taskwarrior - Примеры с комментариями.md
- Wi-Fi в Linux откуда боль и как её лечить.md
- ZSH - что за shell?.md
- iptables
- megacli - утилита управления LSI MegaRAID контроллерами..md
- ssh вход по ключу для root'a.md
- zfs шпаргалка.md
- zpool шпаргалка.md
- Взять цвет пипеткой.md
- Встроенные переменные Bash (POSIX-compatible).md
- Генерим себе пароли.md
- Группа wheel.md
- Добавление принтера на archLinux.md
- Зашифровать папку.md
- Звук
- Как дверь по паролю на SSH запереть!.md
- Как подключить джостик от PS3 к Linux.md
- Как раскрасить вывод echo?.md
- Как узнать какая материнка стоит?.md
- Качаем с youtub'a.md
- Конвертирование в .iso различных образов..md
- Копирование без кеширования.md
- Куда пишутся "логи неудачных попыток входа в систему"?.md
- Настройка ntp.md
- Настройка сети в ручную на arch'e.md
- Не работает звук. Что делать?.md
- Нет wifi карты на ноуте, что делать?.md
- Обновление ключей в Arch Linux.md
- Основные пакеты при установке arch linux.md
- Очистка кеша pacman и yay.md
- Перевод выделенного текста и показ перевода в графическом диалоговом окне KDE.md
- Переменные окружения (ENV).md
- Работа с .qcow2.md
- Создание собственной сети внутри Docker'a.md
- Специфично для Linux переменные окружения.md
- Список пакетов для установки Arch'a.md
- Ставим i3 на Arch Linux.md
- Удаление защищённых файлов.md
- Установка tinyproxy.md
- Установка видео драйверов.md
- Установка пакетов из исходников в Arch Linux.md
- Чиним не рабочие F1-F12.md
- Что за "коровья СУПЕРСИЛА"?.md
- Что такое Linger в системе systemd.md
- Шпаргалка по всему systemd.md
- список команд для mdadm - утилиты для управления RAID-массивами.md
Linger
— это функциональность в systemd
, которая позволяет юзерским сервисам запускаться даже в том случае, когда пользователь не вошел в систему. Обычно юзерские сервисы (systemctl --user
) стартуют только тогда, когда пользователь инициирует сессию (например, через SSH или локально). Однако, включение linger
позволяет запускать эти сервисы сразу при старте системы и держать их активными в фоновом режиме.
Почему нужен Linger
Активируя linger
для пользователя, можно:
- Запускать юзерские сервисы и таймеры до входа в систему.
- Автоматизировать выполнение задач и сервисов для пользователя.
- Поддерживать долгоживущие процессы, которые не зависят от активной сессии пользователя.
Как работает linger
systemd
по умолчанию запускает службы пользователя только при его активном логине. Но если включить linger
, то systemd
создаст окружение для пользователя и будет поддерживать его, как только система загружается.
Это достигается созданием специального файла в /var/lib/systemd/linger/
, который хранит информацию о пользователе и разрешает запуск его сервисов. Когда включён linger
, systemd
будет автоматически создавать пользовательскую сессию, которая стартует вместе с системой.
Как включить и отключить linger
Включение linger
Для включения linger
используйте команду:
sudo loginctl enable-linger <имя_пользователя>
Пример:
sudo loginctl enable-linger proxy
Это создаст файл /var/lib/systemd/linger/proxy
, который говорит systemd
, что сервисы пользователя proxy
могут работать даже без активной сессии.
Отключение linger
Чтобы отключить linger
, выполните:
sudo loginctl disable-linger <имя_пользователя>
Пример:
sudo loginctl disable-linger proxy
Это удалит файл /var/lib/systemd/linger/proxy
, и юзерские сервисы снова будут запускаться только при активной сессии.
Проверка статуса linger
Чтобы проверить, включён ли linger
для конкретного пользователя:
loginctl show-user <имя_пользователя> | grep Linger
Пример:
loginctl show-user proxy | grep Linger
Если ответ будет Linger=yes
, значит linger
активирован для данного пользователя.
Как использовать linger
на практике
Пример: Автозапуск сервиса Shadowsocks
Предположим, у нас есть юзерский сервис shadowsocks
, и мы хотим, чтобы он запускался автоматически при старте системы без необходимости логина пользователя proxy
.
Создаём юзерский сервис: Создаем файл сервиса в ~/.config/systemd/user/shadowsocks.service
:
[Unit]
Description=Shadowsocks Service
After=network.target
[Service]
ExecStart=/usr/bin/ssserver -c /home/proxy/.config/shadowsocks/config.json -d start
ExecStop=/usr/bin/ssserver -c /home/proxy/.config/shadowsocks/config.json -d stop
RemainAfterExit=yes
[Install]
WantedBy=default.target
Активируем linger
для пользователя proxy
:
sudo loginctl enable-linger proxy
Включаем и запускаем юзерский сервис: Выполняем от имени пользователя proxy
:
systemctl --user enable shadowsocks
systemctl --user start shadowsocks
Перезагружаем сервер и проверяем: После перезагрузки сервера, даже если пользователь proxy
не вошел в систему, shadowsocks
будет запущен автоматически:
systemctl --user status shadowsocks
Ограничения и безопасность
- Ресурсы: При включении
linger
для пользователя,systemd
создаёт его окружение, что может потреблять дополнительные системные ресурсы. Важно учитывать это, если на сервере много пользователей. - Безопасность:
linger
открывает возможность для юзерских сервисов работать в фоне без активного логина. Убедитесь, что эти сервисы настроены безопасно и не создают уязвимостей.
Заключение
Linger
— это мощный инструмент для автоматизации запуска сервисов пользователя, позволяющий обойтись без ручного входа в систему. Это полезно для серверов и систем, где требуются длительные процессы, работающие в фоновом режиме.