Читаючи man 5 systemd.unit
і man 5 systemd.target
повідомляючи нам, що одиничні файли використовуються для визначення цілей, а також для всього іншого, що систематизується. Немає спеціальної документації щодо створення цілі , тому важко визначити, як це робити, але це не надто відрізняється від створення служби.
Коли ви створюєте ціль, вам потрібно буде зробити посилання на target.wants
каталог із каталогу системних служб. Тоді ви можете встановити / завантажувати ціль. Ось як це може виглядати з урахуванням вашого прикладу.
/etc/systemd/system/foo.target
Це одиничний файл цілі. Якщо в якості прикладу буде взятий graphical.target, ми можемо створити власну ціль, використовуючи її як базу.
[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
Пояснити варіанти, взяті з системних наборів;
Description
- Описує ціль. Ви повинні зрозуміти
Requires
- Важкі залежності від цілі. Ви повинні дозволити базовій системі запуститися до початку власних служб
Wants
- М’які залежності. Ціль не вимагає запуску цих цілей .
Conflicts
- Якщо в підрозділі є налаштування конфліктів на іншому блоці, запуск першого зупинить другий і навпаки.
After
- Чоботи після цих послуг
AllowIsolate
- Дійсно залежать від вас та вашого оточення. Деталі доступні на сторінці сторінкиsystemd.unit(5)
/etc/systemd/system/foo.target.wants/
Це каталог, в якому ви зв’яжете послуги, які ви створюєте / потребуєте для своєї цілі. Він еквівалентний Wants=
опції у файлі одиниці. Створіть цей каталог, а потім створіть подібні посилання; ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
. Це створює символьне посилання з bar.service в системному каталозі до каталогу foo.target.wants.
Я думаю, що створення файлу підрозділу для послуги є якось поза сферою цієї відповіді, і це питання, безумовно, є більш задокументованим, тому я покину це. Коли ви створюєте свій одиничний файл, просто посилайте його на каталог target.wants або додайте його до Wants=
директиви.