Czytanie man 5 systemd.uniti man 5 systemd.targetmówi nam, że pliki jednostek są używane do definiowania celów, a także wszystkiego innego systemowego. Nie ma żadnej dokumentacji dotyczącej tego, jak utworzyć cel , więc trudno jest określić, jak należy to zrobić, ale nie różni się zbytnio od tworzenia usługi.
Podczas tworzenia celu konieczne będzie utworzenie dowiązań symbolicznych do target.wantskatalogu z katalogu usług systemd. Następnie możesz ustawić / uruchomić swój cel. Oto jak może wyglądać na podstawie Twojego przykładu.
/etc/systemd/system/foo.target
To jest plik jednostki celu. Jeśli jako przykład weźmy graficzny.target, możemy stworzyć własny cel, używając go jako podstawy.
[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
Aby wyjaśnić opcje zaczerpnięte ze stron systemowych;
Description- Opisuje cel. Powinieneś zrozumieć
Requires- Trudne zależności od celu. Powinieneś pozwolić na uruchomienie podstawowego systemu przed uruchomieniem własnych usług
Wants- Miękkie zależności. Cel nie wymaga ich uruchomienia.
Conflicts - Jeśli jednostka ma ustawienie Konflikty na innej jednostce, uruchomienie pierwszej spowoduje zatrzymanie drugiej i odwrotnie.
After - Buty po tych usługach
AllowIsolate- Naprawdę zależy od ciebie i twojego środowiska. Szczegóły są dostępne na stronie podręcznikasystemd.unit(5)
/etc/systemd/system/foo.target.wants/
To jest katalog, w którym podłączysz usługi, które tworzysz / potrzebujesz dla swojego celu. Jest to odpowiednik Wants=opcji w pliku jednostkowym. Utwórz ten katalog, a następnie utwórz takie dowiązania symboliczne; ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service. Spowoduje to utworzenie dowiązania symbolicznego z bar.service w katalogu systemowym do katalogu foo.target.wants.
Myślę, że utworzenie pliku jednostkowego dla usługi jest w pewnym sensie poza zakresem tej odpowiedzi, a to pytanie jest zdecydowanie bardziej udokumentowane, więc na razie o tym nie wspominam. Kiedy tworzysz plik jednostki, po prostu symlinkuj go do katalogu target.wants lub dodaj go do Wants=dyrektywy.