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 .