Jaki jest cel, usługa i gniazdo systemud?

35

Wiem, że wszystkie z nich są plikami jednostkowymi, ale nie rozumiem ich specjalnego znaczenia. Myślę, że cele są podobne do demonów, a gniazda są takie same jak gniazdo (IP + port), ale także z numerami i-węzłów. Czy ktoś mógłby wyjaśnić je prostymi słowami?

drpaneas
źródło
3
Strony systemowe mansą przykładowe: czy oglądałeś man systemd.{service,socket,target}?
jasonwryan
@ jasonwryan Właściwie to szukałem i nie mam pełnej odpowiedzi. Patrzę na ten wątek, abym mógł się również nauczyć. Wiem, co to jest usługa, gniazdo, ale mam lukę, jeśli chodzi o cel. Nadal szukam i odpowiem na pytanie, jeśli stanie się dla mnie wystarczająco jasne.
LD James,

Odpowiedzi:

40

Jednostki serwisowe:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

- systemd.service (5)

Systemowe jednostki usługowe to jednostki, które faktycznie wykonują i śledzą programy i demony, a zależności służą do upewnienia się, że usługi są uruchamiane we właściwej kolejności. Są najczęściej stosowanym rodzajem jednostek.

Jednostki gniazd:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

- systemd.socket (5)

Z drugiej strony jednostki gniazdowe tak naprawdę nie uruchamiają demonów. Zamiast tego po prostu siedzą tam i nasłuchują na adresie IP i porcie lub gnieździe domeny UNIX, a gdy coś się z nim łączy, uruchamiany jest demon, dla którego jest to gniazdo, i zostaje mu przekazane połączenie.

Jest to przydatne, aby upewnić się, że duże demony, które zajmują dużo zasobów, ale są rzadko używane, nie są uruchomione i nie zajmują zasobów przez cały czas, ale zamiast tego są uruchamiane tylko w razie potrzeby.

Jednostki docelowe:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

- systemd.target (5)

Cele są używane do grupowania i zamawiania jednostek. Są one w przybliżeniu odpowiednikiem poziomów pracy, ponieważ w różnych celach uruchamiane są różne usługi, gniazda i inne jednostki. W przeciwieństwie do poziomów pracy, są one bardziej swobodne i możesz łatwo tworzyć własne cele dla jednostek zamawiających, a cele mają między sobą zależności.

Na przykład multi-user.targetwiększość grup demonów jest pogrupowana i wymaga basic.targetaktywacji, co oznacza, że ​​wszystkie usługi zgrupowane poniżej basic.targetzostaną uruchomione przed tymi w multi-user.target.

Kyrias
źródło
11

Dokumentacja systemd jest doskonała dla tak stosunkowo nowego projektu. Aby rozpocząć z celów , od man systemd.target:

Jednostki docelowe nie oferują żadnej dodatkowej funkcjonalności oprócz ogólnej funkcjonalności zapewnianej przez jednostki. Istnieją one jedynie w celu grupowania jednostek za pomocą zależności (przydatne jako cele rozruchowe) oraz w celu ustalenia standardowych nazw punktów synchronizacji używanych w zależnościach między jednostkami. Między innymi jednostki docelowe są bardziej elastycznym zamiennikiem poziomów pracy SysV w klasycznym systemie inicjującym SysV.

Te „grupy jednostek” obejmują szereg różnych funkcji, od basic.targetzasadniczo obejmujących uruchamianie systemu, aż po wszystko, od dbus, gettys, punktów montowania do wymiany i timerów. Możesz zobaczyć pełną listę za pomocą man systemd.special.

pliki usług są podstawowymi jednostkami do uruchamiania procesów kontrolowanych przez systemd. Ponownie, od man systemd.service:

Plik konfiguracji jednostki, którego nazwa kończy się na .service, koduje informacje o procesie kontrolowanym i nadzorowanym przez systemd.

Stanowią one demony, które można uruchomić, zatrzymać, zrestartować, ponownie załadować.

Wreszcie gniazda z man systemd.socket:

Plik konfiguracyjny jednostki, którego nazwa kończy się na „.socket”, koduje informacje o IPC lub gnieździe sieciowym lub systemie plików FIFO kontrolowanym i nadzorowanym przez systemd, w celu aktywacji opartej na gniazdach.

Obejmują one gniazdo w systemie plików lub w Internecie, a także klasyczne FIFO jako transport. Każda jednostka gniazdowa ma pasującą jednostkę serwisową, która jest uruchamiana, jeśli pierwsze połączenie pojawi się na gnieździe lub FIFO.

Oprócz manstron warto przeczytać serię postów na blogu Lennarta , systemd dla administratorów , która zapewnia dogłębne spojrzenie na architekturę i implementację systemd (obecnie w serii jest 20 postów).

jasonwryan
źródło