- [⬆ вверх]
- 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
- Выкачать всё из папки по ftp.md
- Генерим себе пароли.md
- Группа wheel.md
- Добавление принтера на archLinux.md
- Зашифровать папку.md
- Звук
- Игры
- Как дверь по паролю на SSH запереть!.md
- Как определять какие кнопки жмакаются.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
- Обработка видео под Linux.md
- Обучение
- Основные пакеты при установке arch linux.md
- Очистка кеша pacman и yay.md
- Перевод выделенного текста и показ перевода в графическом диалоговом окне KDE.md
- Перегенерить mirrors.md
- Переменные окружения (ENV).md
- Переходим с remmina на терминал.md
- Работа с .qcow2.md
- Сменить имя hostname.md
- Создание пользователя.md
- Создание собственной сети внутри Docker'a.md
- Специфично для Linux переменные окружения.md
- Список пакетов для установки Arch'a.md
- Ставим Arch Linux на RAID1.md
- Ставим i3 на Arch Linux.md
- Удаление защищённых файлов.md
- Установка tinyproxy.md
- Установка vim на стероидах.md
- Установка видео драйверов.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 — это мощный инструмент для автоматизации запуска сервисов пользователя, позволяющий обойтись без ручного входа в систему. Это полезно для серверов и систем, где требуются длительные процессы, работающие в фоновом режиме.