Системні залежності та порядок завантаження


20

Мені потрібно вказати порядок завантаження для запуску процесів. У мене 389 Каталог серверів і Samba працюють на Fedora 18. Як я можу завантажувати мережеві сервіси, потім 389 DS, потім Samba? Чи є графічний інтерфейс для управління цим у Fedora?

Я дав можливість Самбі почати systemctl enable smb.service. Я також включив 389 DS з systemctl enable dirsrv.target.


Systemd не вимагає порядку серед сервісів, ідея полягає в тому, щоб запустити все паралельно і передавати з'єднання серверам, коли вони стануть доступними. Конфігурація, задана установкою за замовчуванням, має бути нормальною. Чому, на вашу думку, потрібно визначити замовлення? Чи щось не спрацьовує?
vonbrand

Я також повинен зазначити, оскільки це повернулося, що ви дійсно не повинні запускати послуги файлів / друку на контролері домену.
Майкл Хемптон

@vonbrand У мене виникла ця проблема, коли моєму серверу DHCP потрібен slapd, щоб бути оновленим (оскільки його конфігурація зберігалася в каталозі LDAP). Якби не він, сервер DHCP не з’явився б.
мат

Відповіді:


25

Використовуйте 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надає GUI для systemd. Дає хороший огляд стану systemd, але вам все одно доведеться використовувати текстовий редактор, щоб змінити файли одиниць.


У випадку, коли A вимагає B , що скаже, що "B" "не вдалося", щоб A не було запущено? Програма B повертає ненульове значення?
Джон Ван

2
Неприхильне, тому що це радить погану практику. Не редагуйте /usr/lib/systemdверсії одиничних файлів, якщо ви не підтримуєте дистрибутив або не любите перезаписувати файли під час кожного оновлення пакета. Або скопіюйте файл одиниці у файл, /etc/systemdа потім відредагуйте його, або скористайтеся спальним файлом (детальніше див. Systemd.unit (5)). Ще простіше, просто використовуйте те, systemctl edit smb.serviceщо робить магію файлу, що випадає автоматично!
Джеремі Віссер

3
Дякуємо за редагування відповіді! Це вирішує проблеми, і я перетворився на випуск. :-)
Джеремі Віссер

10

Робіть дві речі:

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

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

    Змініть його на:

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


Це, здається, не працює. Самба все ще завантажується до 389.
Ділан Кломпаренс

3
після редагування unitфайлів зазвичай слід запуститиsystemctl daemon-reload
scottyseus

2

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

Requires=dirsrv.target

і

After=dirsrv.target

Ну, я проголосував за цю відповідь, однак я особисто пішов би з Wants = dirsrv.target замість Requires =. (див. systemd.unit (5) для Wants =)
галактика

2

Існує дві альтернативи для зміни службового файлу в /usr/lib/systemd/system(див. Приклад 2. Переосмислення параметрів постачальника ):

  1. Скопіюйте файл /etc/systemd/systemта виконайте його модифікації. Цей файл повністю замінить файл у /usr/lib.

  2. Створіть файл /etc/systemd/system/smb.service.d/local.conf. Вміст файлу повинен бути приблизно на зразок наведеного нижче прикладу. Це вибірково перекриває параметри «Потрібно» та «Після» у наданому постачальником службовому файлі.

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

Хоча це може працювати, недостатньо лише додати параметр "Після" (див. [Параметри розділу] . "Після" контролює порядок, але не залежність. Якщо dirsrv.targetце не розпочато іншим способом, вказівка ​​замовлення не запустить його. Використання опції "Потрібно" або "Хоче" змусить dirsrv.targetзапуститися.

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

NB: Я не знаю, чи був такий підхід, коли це питання було спочатку задано.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.