Hvordan lage en tjenestefil i Linux

Hvordan Lage En Tjenestefil I Linux



Systemd init-systemet er nå en del av nesten alle Linux-distribusjoner. Som administrator eller utvikler lager du tjenester som systemd kan administrere. For eksempel, hvis du vil starte tjenester ved oppstart eller vil kontrollere dem manuelt, kan det gjøres gjennom en tilpasset tjenestefil.

I denne opplæringen vil jeg gå gjennom hvordan du lager en systemd servicefil på Linux.







Hva er en tjenestefil

Før vi går videre, la oss forstå hva en systemd-tjenestefil er og hvordan den er opprettet på Linux.



En systemd-tjenestefil inneholder instruksjoner satt for systemd for å administrere tjenesten. Den inneholder vanligvis tre seksjoner:



  • Enhet
  • Service
  • Installere

De Enhet delen inneholder grunnleggende informasjon om tjenesten som en kort beskrivelse, dokumentasjonssider og en vei til avhengigheter. De Installere delen er valgfri, men vanligvis administrerer den i hvilken systemtilstand tjenesten skal aktiveres.





De Service seksjonen er normalt klemt mellom enheten og installasjonsseksjonen. Den inneholder først og fremst typen tjeneste og banen til de kjørbare filene som i hovedsak er kommandoer som skal utføres ved påkalling av tjenesten av systemd.

Her er hvordan en typisk tjenestefilstruktur ser ut.



[ Enhet ]

Direktiv1 =instruksjon

Direktiv2 =instruksjon



[ Service ]

Direktiv1 =instruksjon

Direktiv2 =instruksjon



[ Installere ]

Direktiv1 =instruksjon

Direktiv2 =instruksjon

Her er direktiver parametere som tar sine respektive input. For eksempel Beskrivelse direktivet tar en streng av navnet på tjenesten. På lignende måte, ExecStart tar hensyn til den fullstendige banen til den kjørbare filen.

En typisk tjenestefil av ssh.service er gitt nedenfor.

Hvordan lage en tjenestefil

For å lage en systemtjeneste er det nødvendig å forstå de viktigste direktivene. I denne veiledningen vil jeg dekke de essensielle direktivene som kan hjelpe deg med å lage en fullt funksjonell tjenestefil.

Å lage en tjenestefil innebærer flere trinn, la oss begynne med å lage skriptfilen.

Merk: For å fortsette med metoden nevnt nedenfor, må du ha root-privilegier.

1. Opprette et skript

Det første trinnet involverer opprettelsen av koden som vil bli utført når tjenesten starter sin drift. For denne opplæringen lager jeg et bash-skript som vil lagre oppetiden til Linux-systemet og minnebruken.

La oss lage et skript i gjeldende katalog med navnet på myscript.sh ved hjelp av nano-editor.

sudo nano myscript.sh

Legg nå til skriptet gitt nedenfor i filen og lagre det ved å trykke ctrl+x og så og .

#!/bin/bash

ekko '>>Her er oppetiden til systemet ditt<<' > hjem / han selv / minfil.txt

oppetid >> hjem / han selv / minfil.txt

ekko '>>Her er minnebruken til systemet ditt<<' >> / hjem / han selv / minfil.txt

gratis -m >> hjem / han selv / minfil.txt

sove 60

Manuset inneholder et par ekkostrenger og oppetid og gratis kommandoer.

De oppetid kommando på Linux brukes til å skrive ut hvor lenge et system har kjørt, og hvor mange brukere som er koblet til med en gjennomsnittlig systembelastning på siste 1, 5 og 15 minutter.

De gratis kommandoen brukes til å skrive ut minnebruken til systemet, mens -m flagget brukes til å skrive ut utdataene i MBs .

For å lagre informasjon i en tekstfil bruker vi spesielle operatører kalt omdirigeringsoperatører. De > operator brukes til å sette inn tekst i den nevnte tekstfilen. Men hvis filen ikke allerede eksisterer, vil den bli opprettet. Mens >> operator brukes til å legge til teksten i filen. De sove kommandoen brukes til å opprettholde tjenestens aktivitet i minimum ett minutt.

Gjør nå skriptet kjørbart ved å gi de nødvendige tillatelsene.

sudo chmod +x myscript.sh

Skriptet har nå kjøringstillatelsen, la oss fortsette til neste seksjon.

Merk: For å gjøre tjenestefilen feilfri, bruk den absolutte banen til filen i bash-skriptet.

2. Opprette en .service-fil

Deretter oppretter du en tjenestefil med .service Utvidelse. Tjenestefilen må opprettes i /etc/systemd/system katalog. Naviger først til denne katalogen ved å bruke cd kommando.

cd / etc / systemd / system

Du kan opprette tjenestefilen i en hvilken som helst katalog, og senere flytte den filen til denne katalogen.

Jeg lager en tjenestefil med minservice.service Navn.

sudo nano minservice.service

Legg nå til følgende linjer i filen.

[ Enhet ]

Beskrivelse =Min tjeneste

[ Service ]

Type = enkelt

ExecStart = / bin / bash / hjem / han selv / script.sh

Omstart = ved feil

[ Installere ]

Etterlyst Av =multi-user.target

Noter det [Enhet], [Tjeneste], og [Installere] er skiller mellom store og små bokstaver . Tjenestefilen vil ikke fungere hvis noen av dem er nevnt feil, for eksempel [UNIT] eller [SERVICE].

Tjenestenavnet er spesifisert som Min tjeneste i Beskrivelse direktivet til [Enhet] seksjon.

De Type av tjenesten er enkel i [Service] seksjon, som er standardtypen. Forking , et skudd , gi beskjed , dbus , og inaktiv er noen av de andre typene.

Hvis du ønsker å gjøre tjenesten brukerspesifikk, må du Bruker direktiv kan også brukes med brukernavnet til brukeren. Bruk av dette direktivet vil gjøre tjenestebrukerens tillatelse avhengig.

Mens ExecStart direktivet inneholder hele banen til den kjørbare filen. I eksemplet ovenfor, skriptfilen myscript.sh er lagret i /home/sam/ katalog. Dette direktivet administrerer faktisk hva som skal utføres når en tjeneste påkalles av systemd. Hvis kommandoens fullstendige bane ikke er spesifisert, vil den automatisk løses for å fikse absolutte baner som f.eks /usr/local/bin , /usr/bin/, og /bin . Det er helt greit å bruke det kjørbare navnet så lenge de er i standard kommandokataloger, men nevne den absolutte banen ellers. Merk at flere kommandoer også kan brukes som er atskilt med semikolon (;).

De [Installere] delen er valgfri; den indikerer imidlertid hvordan tjenesten er aktivert. De Etterlyst Av direktiv tar målfilene på kjørenivå som parametere. Ulike målfiler indikerte forskjellige kjørenivåer av systemet som f.eks strøm av , redde , flerbruker , grafisk , og starte på nytt .

De multi-user.target betyr at tjenesten vil bli aktivert når systemet er i en tilstand for å tillate flerbruker ikke-grafiske sesjoner.

3. Aktivering av tjenesten

For å aktivere tjenesten, last først systemkonfigurasjonene på nytt ved å bruke systemctl nytte.

sudo systemctl daemon-reload

Deretter aktiverer du tjenesten igjen ved å bruke systemctl kommando med muliggjøre .

sudo systemctl muliggjøre minservice.service

For å bekrefte, sjekk statusen til tjenesten ved å bruke systemctl-status kommando.

Tjenesten kjører.

La oss nå lese tekstfilen minfil.txt tjenesten opprettet i /hjem katalog.

Hvordan lage en Systemd-tjenestefil for normal bruker

Prosedyren for å lage tjenestefilen for en vanlig bruker ligner på metoden for å lage en tjenestefil av administratoren. Imidlertid er katalogen for å lagre tjenestefilen for vanlige brukere annerledes. Vanlige brukere må plassere tjenestefilene sine i ~/.config/systemd/user . Denne katalogen må opprettes ved hjelp av mkdir kommando.

mkdir ~ / .config / systemd / bruker

For å aktivere tjenesten av en vanlig bruker -bruker kommandoen er satt inn med systemctl i stedet for sudo .

systemctl --bruker daemon-reload

systemctl --bruker muliggjøre SERVICE-NAME.service

systemctl --bruker status SERVICE-NAME.service

De -bruker alternativet brukes til å administrere brukerens systemd service-filer.

Slik fjerner du tjenestefil

For å fjerne tjenestefilen må tjenesten først stoppes.

sudo systemctl stoppe SERVICE-NAME.service

Sjekk status ved hjelp av systemctl-status kommando for å vite om tjenesten er stoppet eller ikke. Fjern deretter tjenestefilen ved å bruke rm kommando.

sudo rm / etc / systemd / system / SERVICE-NAME.service

Last nå inn på nytt systemd konfigurasjon.

sudo systemctl daemon-reload

Konklusjon

Den tilpassede systemtjenesten er fordelaktig i ulike scenarier. I denne veiledningen lærte vi hvordan du oppretter en tilpasset systemd servicefil for en systemadministrator og hvordan vanlige brukere kan opprette en servicefil. Videre ser vi også prosedyren for å fjerne tjenestefilen.