Назад | Перейти на главную страницу

Зависимости systemd и порядок загрузки

Мне нужно указать порядок загрузки для запуска процессов. У меня 389 Directory Server и Samba, работающие в Fedora 18. Как я могу загрузить сетевые службы, затем 389 DS, а затем Samba? Есть ли в Fedora графический интерфейс для управления этим?

Я включил Samba, чтобы начать с systemctl enable smb.service. Я также включил 389 DS с systemctl enable dirsrv.target.

Использовать systemctl edit smb.service для обновления зависимостей.

After=dirsrv.target - Обеспечивает запуск smb.service после dirsrv.target.

Для надежности (что будет стоить того, если вы возитесь с этим материалом), вы также можете включить некоторые из следующего:

Requires=dirsrv.target - Активировать dirsrv.target при активации smb.service. Вызовет сбой smb.service в случае сбоя dirsrv.target.

Wants=dirsrv.target - Активировать dirsrv.target при активации smb.service. Не приведет к сбою smb.service в случае сбоя dirsrv.target.

BindsTo=dirsrv.target - Если dirsrv.target деактивирован, деактивируйте smb.service.

Источник: http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-ui предоставляет графический интерфейс для systemd. Дает хорошее представление о состоянии systemd, но вам все равно придется использовать текстовый редактор для изменения файлов модулей.

Сделайте две вещи:

  1. Отредактируйте /lib/systemd/system/smb.service unit файл, чтобы указать зависимость. В [unit] раздел содержит After= строка, которая определяет, какие услуги / цели должны быть достигнуты перед этой.

    After=syslog.target network.target nmb.service winbind.service
    

    Измените его на:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. Сообщите об этой зависимости в Fedora как об ошибке, чтобы его можно было включить в будущие выпуски.

вам может потребоваться изменить или добавить строку с Requires директива в [Unit] раздел /usr/lib/systemd/system/smb.service файл.

Requires=dirsrv.target

и

After=dirsrv.target

Есть две альтернативы модификации служебного файла в /usr/lib/systemd/system (видеть Пример 2. Переопределение настроек поставщика):

  1. Скопируйте файл в /etc/systemd/system и внесите изменения в копию. Этот файл полностью переопределит файл в /usr/lib.

  2. Создайте файл /etc/systemd/system/smb.service.d/local.conf. Содержимое файла должно быть примерно таким, как в примере ниже. Это выборочно отменяет параметры «Требуется» и «После» в служебном файле, предоставленном поставщиком.

Каждый из них (включая изменение файла в /usr/lib) имеет преимущества и недостатки. Наилучший выбор может зависеть от услуги и характера изменений.

Хотя это может сработать, недостаточно просто добавить параметр «После» (см. [Unit] Параметры раздела). «После» контролирует порядок, но не зависимости. Если dirsrv.target не запускается другим способом, указание заказа не запустит его. Использование опций «Требует» или «Хочет» заставит dirsrv.target быть запущенным.

[Unit]
Requires=dirsrv.target
After=dirsrv.target

NB: Я не знаю, был ли доступен такой подход, когда изначально задавался этот вопрос.