Как включить сервис только для graphical.target в systemd?

Вопрос или проблема

Я пытаюсь включить службу Bluetooth только для graphical.target, что эквивалентно уровню выполнения 5.

Я на Debian Jessie, здесь используется systemd.

Мне сказали создать символьную ссылку в директории /etc/systemd/system/graphical.target.wants, но я все еще немного запутан.

Я уже пробовал использовать update-rc.d, но это не сработало.

В /etc/systemd/system есть папка под названием bluetooth.service.wants, в которой есть файл bluetooth.service, содержащий информацию о юните.

Также есть другой .service файл в /etc/systemd/system, который является псевдонимом для оригинального bluetooth.service. Спасибо.

Этот ответ на Unix.SE предоставляет хороший обзор о том, как создать пользовательский таргет.

Очевидно, вы не можете легко переопределить секцию [Install] юнита systemd. Она определяет, какой таргет «будет хотеть» этот юнит.

~ # systemctl enable apcupsd
Создана символьная ссылка /etc/systemd/system/multi-user.target.wants/apcupsd.service → /usr/lib/systemd/system/apcupsd.service.

~ # cat /usr/lib/systemd/system/apcupsd.service
[Unit]
Description=Монитор APC UPS

[Service]
ExecStart=/usr/bin/apcupsd -b

[Install]
WantedBy=multi-user.target

Как видно, включение юнита (не только службы!) так же просто, как создание символьной ссылки. Теперь, когда systemd сообщается о запуске multi-user.target, он также запустит apcupsd.service.

Итак, сначала вам нужно узнать, где находится bluetooth.service. Предположим, что он находится по адресу /usr/lib/systemd/system/bluetooth.service. Затем вам просто нужно:

~ # ln -s /usr/lib/systemd/system/bluetooth.service /etc/systemd/system/graphical.target.wants/bluetooth.service

Если директория graphical.target.wants не существует, вам нужно сначала создать ее.

Ответ или решение

Чтобы включить службу Bluetooth только для целевого графического эквивалента (graphical.target) в системе, использующей systemd, выполните следующие шаги. Данный процесс позволяет привязать службу к определенному целевому состоянию, что особенно полезно, если вам нужно, чтобы служба запускалась только в графической среде.

Шаги для активации службы для graphical.target

  1. Проверьте наличие файла службы Bluetooth:
    Убедитесь, что файл службы Bluetooth существует. Обычно он расположен по пути /usr/lib/systemd/system/bluetooth.service. Для этого выполните команду:

    ls /usr/lib/systemd/system/bluetooth.service
  2. Проверьте наличие целевого каталога:
    Убедитесь, что директория /etc/systemd/system/graphical.target.wants существует. Если её нет, создайте её с помощью следующей команды:

    sudo mkdir -p /etc/systemd/system/graphical.target.wants
  3. Создание символической ссылки:
    После того как убедитесь, что файл службы и директория существуют, создайте символическую ссылку на службу Bluetooth в каталоге graphical.target.wants, используя команду:

    sudo ln -s /usr/lib/systemd/system/bluetooth.service /etc/systemd/system/graphical.target.wants/bluetooth.service

    Это действие создаст ссылку, которая позволит системе запускать службу Bluetooth, когда будет активирован целевой режим graphical.target.

  4. Проверка и активация службы:
    После создания ссылки рекомендуется активировать службу Bluetooth и проверить её статус:

    sudo systemctl daemon-reload
    sudo systemctl enable bluetooth.service
    sudo systemctl start bluetooth.service
    sudo systemctl status bluetooth.service

Дополнительные замечания

  • Проверка работоспособности:
    После выполнения всех вышеописанных действий, после перезагрузки системы, служба Bluetooth будет автоматически запущена только тогда, когда будет достигнуто целевое состояние graphical.target.

  • Отладка:
    Если служба не запускается, проверьте журналы systemd для получения информации об ошибках:

    journalctl -xe
  • Избегайте использования update-rc.d:
    В случае с systemd не используйте update-rc.d, так как этот инструмент предназначен для систем инициализации SysV и не совместим с systemd.

Следуя данным шагам, вы сможете успешно настроить службу Bluetooth для работы только в графическом режиме, что обеспечит оптимальное использование системных ресурсов и повысит безопасность, ограничив запускаемые процессы только необходимыми задачами в определённых целях.

Оцените материал
Добавить комментарий

Капча загружается...