Systemd servicefil

Systemd Servicefil



På Linux viser systemctl-statusoutputtet, at tjenesten er indlæst gennem en fil, der kaldes servicefilen. Disse filer kan tilgås i /lib/systemd/system eller /etc/systemd/system mapper.

Tjenestefilerne har .service udvidelser og indeholder de instruktioner, der kræves af systemd at administrere en tjeneste.







Det systemd init-systemet styrer systeminitialiseringen ved hjælp af Enhed . En enhed er et objekt, der udfører en opgave eller handling, såsom at administrere en tjeneste, som involverer styring og overvågning af den. Disse enheder er i det væsentlige filer kaldet servicefiler, der inkluderer enhedsafhængigheder og -kommandoer. Disse filer er afgørende for effektiv styring af baggrundsprocesserne og styring af ressourcer.



I guiden vil jeg udforske systemd-tjenestefilen, dens struktur og de vigtigste direktiver, der styrer tjenesten.



Når man arbejder med systemd, er vilkårene systemd servicefil og systemd enhedsfil bruges ofte i flæng, fordi de teknisk set refererer til det samme.





Hvad er Systemd Service File

På Linux administrerer systemd'en tjenesterne ved hjælp af servicefilerne, der indeholder konfigurationsinstruktionerne, så systemd'en kan forstå og udføre.

For at liste enhederne skal du bruge systemctl med –liste-enheder kommando.



systemctl --liste-enheder

For at læse servicefilen for enhver tjeneste skal du bruge kat kommando med filstien.

kat [ / service-fil-sti ]

For eksempel for at se servicefilen for ssh.service brug den givne kommando.

kat / lib / systemd / system / ssh.service

Anatomy of Systemd Service-fil

Generelt indeholder systemd serviceenhedsfiler tre sektioner.

  • Enhed
  • Service
  • Installere

En tjenestespecifik enhedsfil vil have en specifik sektion kaldet Service afsnit.

Bemærk, at tjenesten kun er en enhedstype. En enhed kan have forskellige typer såsom socket, enhed, mount, automount, swap, target, timer, slice og scope. Disse sektioner er placeret mellem enheds- og installationssektionerne. Filtypenavnet vil også blive erstattet med den respektive enhedstype, for eksempel vil en socket enhedstype have en .socket filtypenavn.

Bemærk: I denne vejledning vil jeg fokusere på tjenesteenhedstypen på grund af dens brede brug af administratorer og udviklere.

Disse sektioner er omgivet af firkantede parenteser ([]). Hvert afsnit indeholder et relevant instruktionssæt. En generel struktur af en servicefil er givet nedenfor.

[ Enhed ]

Direktiv 1 = Instruktion 1

Direktiv 2 = Instruktion 2

[ Service ]

Direktiv 1 = Instruktion 1

Direktiv 2 = Instruktion 2

[ Installere ]

Direktiv 1 = Instruktion 1

Direktiv 2 = Instruktion 2

Rækkefølgen af ​​afsnittene kan ændres; dog følges den ovennævnte rækkefølge i almindelighed.

[Enhed] Sektion

Enhedsafsnittet indeholder beskrivelsen af ​​enheden og enhedsafhængigheder. Dette afsnit er efter konvention placeret øverst i servicefilen. De almindeligt anvendte direktiver er anført nedenfor:

direktiv Beskrivelse
Beskrivelse Dette direktiv bruges til at nævne navnet på tjenesten. Beskrivelsen må ikke overstige 80 tegn.
Dokumentation Dette direktiv indeholder man-siden eller URL-adressen til tjenesten.
Kræver Dette direktiv bruges til at nævne afhængigheden af ​​den aktuelle tjeneste. Hvis aktiveringen af ​​denne afhængighedstjeneste ikke udføres, vil den aktuelle tjeneste ikke blive startet.
Har lyst Dette direktiv bruges til at nævne afhængigheden af ​​den aktuelle tjeneste. Denne afhængighedstjeneste kræves dog ikke aktiveret for at køre den aktuelle tjeneste.
Før Efter at den aktuelle enhed er blevet aktiveret, vil tjenesten nævnt i dette direktiv blive startet.
Efter Inden den aktuelle enhed er blevet aktiveret, vil tjenesten nævnt i dette direktiv blive startet.
Binder Til Dette direktiv knytter den aktuelle tjeneste til den nævnte tjeneste. Hvis den tilknyttede tjeneste genstarter, genstartes de aktuelle tjenester også.

Ud over disse direktiver er der yderligere to direktiver; Tilstand og Hævde. Mange tjenester kræver specifikke systembetingelser for at kunne køre, og disse direktiver bruges til at nævne betingelserne.

[Installer] Sektion

Dette afsnit er ikke obligatorisk og er kun nødvendigt, når en tjeneste kræver aktivering eller deaktivering ved opstart. Desuden er det også at nævne aliastjenesten. De almindeligt anvendte direktiver til installationssektionen er anført nedenfor:

direktiv Beskrivelse
Efterlyst Af Dette direktiv fastsætter kørselsniveauet * målet for tjenesten. Hvis et mål er sat til multi-user.target så vil tjenesten blive aktiveret på dette kørselsniveau.
RequiredBy Dette direktiv minder om WantedBy, men selv uden den afhængighed, der er nævnt i direktivet, vil tjenesten blive aktiveret.
Alias Dette direktiv bruges til at aktivere tjenesten med et andet navn. Et symbollink oprettes med dette navn, når tjenesten er aktiveret.

For det meste multi-user.target bruges som Efterlyst Af parameter. Men hvad er multi-user.target?

Multi-user.target repræsenterer den systemtilstand, der er klar til at acceptere ikke-grafiske flerbrugersessioner. Det er staten før lancering af GUI.

Der er forskellige kørselsniveauer af systemet, lad os lære om funktionen af ​​disse løbeniveauer.

I systemd er tjenesterne grupperet baseret på kørselsniveauer, som kaldes mål . Hvert run-level har en fil med .mål forlængelse i /etc/systemd/system vejviser. En tjeneste vil køre baseret på tilstanden af ​​kørselsniveauet.

Løb niveau Mål Stat Filer
0 sluk Sluk og sluk poweroff.target
1 redde Starter redningsskallen redningsmål
2,3,4 flerbruger Starter multi-user non-GUI shell multi-user.target
5 grafisk Etablerer multi-user GUI shell grafisk.mål
6 genstart Sluk og genstart genstart.mål

[Service] Sektion

Dette afsnit omfatter konfigurationsindstillingerne for tjenesten. Den primære konfiguration af dette afsnit er at definere typen og kommandoerne, der skal udføres ved starten af ​​tjenesten. Type og ExecStart er de vigtigste direktiver, der bruges til at oprette en tjeneste.

Forskellige typer af tjenesten er angivet i følgende tabel.

Servicetype Beskrivelse
enkel Det er standardtypen, når typen eller busnavnet ikke er nævnt, og kun ExecStart er nævnt. Systemd'en udfører først hovedprocessen og derefter opfølgningsenheder.
gaffel Denne type bruges til at holde tjenesten kørende, selvom den overordnede tjeneste er lukket. Det forgrener en underordnet proces efter afslutningen af ​​forældreprocessen.
et skud Systemd'en udfører hovedprocessen først, og når hovedprocessen afsluttes, starter opfølgningsenhederne.
dbus Tjenesten med dbus bruges til at kommunikere med en anden proces på bussen. Hvis busnavnet er nævnt, vil processen blive aktiveret, efter at busnavnet er erhvervet.
underrette Tjenesten giver besked, når processen startes. Systemd'en vil fortsætte til opfølgningsenhederne efter meddelelsen er udstedt.
ledig Det holder tjenesten, indtil alle de aktive job er afsendt; primært nyttig til at forbedre konsoloutputtet.

De almindeligt anvendte direktiver i serviceafsnittet er nævnt nedenfor:

direktiv Beskrivelse
ExecStart Den beholder den fulde sti til kommandoen, der skal udføres, for at starte processen.
ExecStartPre Den beholder de kommandoer, der skal udføres, før hovedprocessen begynder.
ExecStartPost Den beholder de kommandoer, der skal udføres, efter at hovedprocessen begynder.
ExecReload Den beholder kommandoen til at genindlæse tjenestekonfigurationen.
Genstart For automatisk at genstarte tjenesten under omstændigheder som ved fejl, ved succes, ved unormal, ved afbrydelse og ved vagthund.
GenstartSek For at beholde antallet af sekunder, hvorefter tjenesten automatisk genstartes.

Det ExecStart er et af de afgørende direktiver, der bruges i afsnittet Service. Den indeholder fuld sti til den eksekverbare at tjenesten udføres ved påkaldelse.

Konklusion

En systemd servicefil er en konfigurationsfil, der er struktureret med direktiver og kommandoer, så de kan administreres af systemd. Disse filer indeholder instruktioner, der angiver, hvordan en tjeneste administreres af systemd. I denne vejledning dækkede jeg, hvordan du får adgang til en systemd-tjenestefil, dens sektioner og direktiver, der administrerer tjenesterne. For at lære mere om servicefilinstruktioner, bedes du læse den officielle dokumentationsvejledning her .