Systemd tjenestefil

Systemd Tjenestefil



På Linux viser systemctl-statusutgangen at tjenesten lastes gjennom en fil som kalles tjenestefilen. Disse filene kan nås i /lib/systemd/system eller /etc/systemd/system kataloger.

Tjenestefilene har .service utvidelser og inneholder instruksjonene som kreves av systemd å administrere en tjeneste.







De systemd init-systemet administrerer systeminitieringen ved hjelp av Enhet . En enhet er et objekt som utfører en oppgave eller handling, for eksempel å administrere en tjeneste, som innebærer å kontrollere og overvåke den. Disse enhetene er i hovedsak filer kalt tjenestefiler som inkluderer enhetsavhengigheter og kommandoer. Disse filene er avgjørende for å effektivt kontrollere bakgrunnsprosessene og administrere ressurser.



I veiledningen vil jeg utforske systemd-tjenestefilen, dens struktur og hoveddirektivene som kontrollerer tjenesten.



Når du arbeider med systemd, vilkårene systemd tjenestefil og systemd enhetsfil brukes ofte om hverandre fordi de teknisk sett refererer til det samme.





Hva er Systemd Service File

På Linux administrerer systemd tjenestene ved å bruke tjenestefilene som inneholder konfigurasjonsinstruksjonene slik at systemd kan forstå og kjøre.

For å liste opp enhetene, bruk systemctl med –liste-enheter kommando.



systemctl --liste-enheter

For å lese tjenestefilen til en tjeneste, bruk katt kommando med filbanen.

katt [ / tjeneste-fil-bane ]

For eksempel for å se tjenestefilen til ssh.service bruk den gitte kommandoen.

katt / lib / systemd / system / ssh.service

Anatomy of Systemd Service File

Generelt inneholder systemd-tjenesteenhetsfiler tre seksjoner.

  • Enhet
  • Service
  • Installere

En tjenestespesifikk enhetsfil vil ha en spesifikk seksjon kalt Service seksjon.

Merk at tjenesten bare er en type enhet. En enhet kan ha forskjellige typer som socket, device, mount, automount, swap, target, timer, slice og scope. Disse seksjonene er plassert mellom enhets- og installasjonsseksjonene. Filtypen vil også bli erstattet med den respektive enhetstypen, for eksempel vil en socketenhetstype ha en .stikkontakt filutvidelse.

Merk: I denne veiledningen vil jeg fokusere på tjenesteenhetstypen på grunn av dens brede bruk av administratorer og utviklere.

Disse seksjonene er omsluttet av firkantede parenteser ([]). Hver seksjon inneholder et relevant instruksjonssett. En generell struktur for en tjenestefil er gitt nedenfor.

[ Enhet ]

Direktiv1 =Instruksjon 1

Direktiv2 =Instruksjon 2

[ Service ]

Direktiv1 =Instruksjon 1

Direktiv2 =Instruksjon 2

[ Installere ]

Direktiv1 =Instruksjon 1

Direktiv2 =Instruksjon 2

Rekkefølgen på seksjonene kan endres; imidlertid følges den ovennevnte rekkefølgen generelt.

[Enhet] Seksjon

Enhetsdelen inneholder beskrivelsen av enheten og enhetsavhengigheter. Denne delen er etter konvensjon plassert øverst i tjenestefilen. Vanlig brukte direktiver er listet opp nedenfor:

direktiv Beskrivelse
Beskrivelse Dette direktivet brukes til å nevne navnet på tjenesten. Lengden på beskrivelsen må ikke overstige 80 tegn.
Dokumentasjon Dette direktivet inneholder man-siden eller URL-en til tjenesten.
Krever Dette direktivet brukes for å nevne avhengigheten av gjeldende tjeneste. Hvis aktiveringen av denne avhengighetstjenesten ikke utføres, vil den gjeldende tjenesten ikke startes.
ønsker Dette direktivet brukes for å nevne avhengigheten av gjeldende tjeneste. Denne avhengighetstjenesten er imidlertid ikke nødvendig å være aktivert for å kjøre den gjeldende tjenesten.
Før Etter at gjeldende enhet er aktivert, vil tjenesten nevnt i dette direktivet startes.
Etter Før den aktuelle enheten er aktivert, vil tjenesten nevnt i dette direktivet startes.
Binder til Dette direktivet knytter gjeldende tjeneste til nevnte tjeneste. Hvis den tilknyttede tjenesten starter på nytt, vil de gjeldende tjenestene også starte på nytt.

Utenom disse direktivene er det ytterligere to direktiver; Betingelse og Påstå. Mange tjenester krever spesifikke systembetingelser for å lykkes, og disse direktivene brukes til å nevne forholdene.

[Installer] Seksjon

Denne delen er ikke obligatorisk og er bare nødvendig når en tjeneste krever aktivering eller deaktivering ved oppstart. Dessuten er det også å nevne aliastjenesten. Vanlig brukte direktiver for installasjonsdelen er oppført nedenfor:

direktiv Beskrivelse
Etterlyst Av Dette direktivet setter kjørenivået * målet for tjenesten. Hvis et mål er satt til multi-user.target da vil tjenesten være aktivert på dette kjørenivået.
Kreves av Dette direktivet ligner på WantedBy, men selv uten avhengigheten nevnt i direktivet, vil tjenesten være aktivert.
Alias Dette direktivet brukes til å aktivere tjenesten med et annet navn. En symbolkobling opprettes med dette navnet når tjenesten er aktivert.

For det meste multi-user.target brukes som Etterlyst Av parameter. Men hva er multi-user.target?

Multi-user.target representerer systemtilstanden klar til å akseptere ikke-grafiske flerbrukerøkter. Det er staten før lansering av GUI.

Det er forskjellige kjørenivåer av systemet, la oss lære om funksjonen til disse kjørenivåene.

I systemd er tjenestene gruppert basert på kjørenivåer, som kalles mål . Hvert kjørenivå har en fil med .mål utvidelse i /etc/systemd/system katalog. En tjeneste vil kjøre basert på tilstanden til kjørenivået.

Løpenivå Mål Stat Filer
0 strøm av Slå av og slå av poweroff.target
1 redde Starter redningsskallet redningsmål
2,3,4 flerbruker Starter flerbruker ikke-GUI-skall multi-user.target
5 grafisk Etablerer multi-user GUI shell grafisk.mål
6 starte på nytt Slå av og start på nytt reboot.target

[Service] Seksjon

Denne delen inneholder konfigurasjonsinnstillingene for tjenesten. Den primære konfigurasjonen av denne delen er å definere typen og kommandoene som skal utføres ved starten av tjenesten. Type og ExecStart er hoveddirektivene som brukes til å sette opp en tjeneste.

Ulike typer tjeneste er oppført i tabellen nedenfor.

Tjenestetype Beskrivelse
enkel Det er standardtypen når typen eller bussnavnet ikke er nevnt og kun ExecStart er nevnt. Systemd utfører først hovedprosessen og deretter oppfølgingsenheter.
gaffel Denne typen brukes for å holde tjenesten i gang selv om overordnet tjeneste er stengt. Det forgrener en barneprosess etter at foreldreprosessen er avsluttet.
et skudd Systemd kjører hovedprosessen først, og når hovedprosessen avsluttes vil oppfølgingsenhetene starte.
dbus Tjenesten med dbus brukes til å kommunisere med en annen prosess på bussen. Hvis bussnavnet er nevnt, vil prosessen aktiveres etter at bussnavnet er hentet.
gi beskjed Tjenesten vil varsle når prosessen starter. Systemd vil gå videre til oppfølgingsenhetene etter at meldingen er gitt.
tomgang Den holder tjenesten til alle de aktive jobbene er sendt; først og fremst nyttig for å forbedre konsolleffekten.

De vanligste direktivene i tjenestedelen er nevnt nedenfor:

direktiv Beskrivelse
ExecStart Den beholder hele banen til kommandoen som skal utføres for å starte prosessen.
ExecStartPre Den beholder kommandoene som skal utføres før hovedprosessen starter.
ExecStartPost Den beholder kommandoene som skal utføres etter at hovedprosessen starter.
ExecReload Den beholder kommandoen for å laste inn tjenestekonfigurasjonen på nytt.
Omstart For automatisk å starte tjenesten på nytt under omstendigheter som ved feil, ved suksess, ved unormalt, ved avbrudd og på vakthund.
RestartSec For å beholde antall sekunder som tjenesten automatisk starter på nytt.

De ExecStart er et av de avgjørende direktivene som brukes i tjenestedelen. Den inneholder hele banen til den kjørbare filen at tjenesten vil utføres ved påkalling.

Konklusjon

En systemd-tjenestefil er en konfigurasjonsfil som er strukturert med direktiver og kommandoer slik at de kan administreres av systemd. Disse filene inneholder instruksjoner som indikerer hvordan en tjeneste administreres av systemd. I denne veiledningen dekket jeg hvordan du får tilgang til en systemd-tjenestefil, dens seksjoner og direktiver som administrerer tjenestene. For å lære mer om servicefilinstruksjoner, vennligst les den offisielle dokumentasjonsveiledningen her .