Sådan opretter du en servicefil i Linux

Sadan Opretter Du En Servicefil I Linux



Systemd init-systemet er nu en del af næsten alle Linux-distributioner. Som administrator eller udvikler opretter du tjenester, som systemd kan administrere. For eksempel, hvis du vil starte tjenester ved opstart eller vil kontrollere dem manuelt, så kan det gøres gennem en brugerdefineret servicefil.

I denne tutorial vil jeg gennemgå, hvordan man opretter en systemd servicefil på Linux.







Hvad er en servicefil

Før vi går videre, lad os forstå, hvad en systemd servicefil er, og hvordan den er oprettet på Linux.



En systemd servicefil indeholder instruktioner sat til systemd til at administrere tjenesten. Den indeholder typisk tre sektioner:



  • Enhed
  • Service
  • Installere

Det Enhed afsnittet indeholder grundlæggende oplysninger om tjenesten, såsom en kort beskrivelse, dokumentationssider og en sti til afhængigheder. Det Installere sektionen er valgfri, men typisk administrerer den, i hvilken systemtilstand tjenesten skal aktiveres.





Det Service sektionen er normalt klemt mellem enheden og installationssektionen. Det indeholder primært typen af ​​tjenesten og stien til de eksekverbare filer, der i det væsentlige er kommandoer til at udføre ved påkaldelse af tjenesten af ​​systemd.

Her er, hvordan en typisk servicefilstruktur ser ud.



[ Enhed ]

Direktiv 1 =instruktion

Direktiv 2 =instruktion



[ Service ]

Direktiv 1 =instruktion

Direktiv 2 =instruktion



[ Installere ]

Direktiv 1 =instruktion

Direktiv 2 =instruktion

Her er direktiver parametre, der tager deres respektive input. For eksempel Beskrivelse direktiv tager en streng af navnet på tjenesten. På lignende måde, ExecStart tager højde for den komplette sti til den eksekverbare.

En typisk servicefil af ssh.service er angivet nedenfor.

Sådan opretter du en servicefil

For at skabe en systemd service er det nødvendigt at forstå de vigtigste direktiver. I denne guide vil jeg dække de væsentlige direktiver, der kan hjælpe dig med at oprette en fuldt funktionel servicefil.

Oprettelse af en servicefil involverer flere trin, lad os begynde med at oprette scriptfilen.

Bemærk: For at fortsætte med metoden nævnt nedenfor, skal du have root-rettigheder.

1. Oprettelse af et script

Det indledende trin involverer oprettelsen af ​​den kode, der vil blive eksekveret, når tjenesten starter sin drift. Til denne tutorial opretter jeg et bash-script, der gemmer oppetiden for Linux-systemet og hukommelsesbrug.

Lad os oprette et script i den aktuelle mappe med navnet på myscript.sh ved hjælp af nano-editor.

sudo nano myscript.sh

Tilføj nu scriptet nedenfor i filen og gem det ved at trykke på ctrl+x og så og .

#!/bin/bash

ekko '>>Her er oppetiden for dit system<<' > hjem / ham selv / minfil.txt

oppetid >> hjem / ham selv / minfil.txt

ekko '>>Her er hukommelsesforbruget på dit system<<' >> / hjem / ham selv / minfil.txt

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

søvn 60

Scriptet indeholder et par ekkostrenge og oppetid og gratis kommandoer.

Det oppetid kommando på Linux bruges til at udskrive, hvor længe et system har kørt, og hvor mange brugere der er forbundet med en gennemsnitlig systembelastning på de sidste 1, 5 og 15 minutter.

Det gratis kommandoen bruges til at udskrive systemets hukommelsesforbrug, mens -m flag bruges til at udskrive output i MB'er .

For at gemme information i en tekstfil bruger vi specielle operatører kaldet omdirigeringsoperatører. Det > operator bruges til at indsætte tekst i den nævnte tekstfil. Men hvis filen ikke allerede eksisterer, vil den blive oprettet. Mens >> operator bruges til at tilføje teksten i filen. Det søvn kommandoen bruges til at opretholde tjenestens aktivitet i en minimumsvarighed på et minut.

Gør nu scriptet eksekverbart ved at give de nødvendige tilladelser.

sudo chmod +x myscript.sh

Script har nu udførelsestilladelsen, lad os fortsætte til næste afsnit.

Bemærk: For at gøre servicefilen fejlfri skal du bruge den absolutte sti til filen i bash-scriptet.

2. Oprettelse af en .service-fil

Derefter skal du oprette en servicefil med .service udvidelse. Servicefilen skal oprettes i /etc/systemd/system vejviser. Først skal du navigere til denne mappe ved hjælp af cd kommando.

cd / etc / systemd / system

Du kan oprette servicefilen i en hvilken som helst mappe og alligevel flytte filen til denne mappe senere.

Jeg opretter en servicefil med minservice.service navn.

sudo nano minservice.service

Tilføj nu følgende linjer til filen.

[ Enhed ]

Beskrivelse =Min tjeneste

[ Service ]

Type = enkel

ExecStart = / beholder / bash / hjem / ham selv / script.sh

Genstart =ved fiasko

[ Installere ]

Efterlyst Af =multi-user.target

Noter det [Enhed], [Service], og [Installere] er skelner mellem store og små bogstaver . Servicefilen fungerer ikke, hvis nogen af ​​dem er nævnt forkert, såsom [ENHED] eller [SERVICE].

Tjenestenavnet er angivet som Min service i Beskrivelse direktiv af [Enhed] afsnit.

Det Type af tjenesten er enkel i [Service] sektion, som er standardtypen. Forking , et skud , underrette , dbus , og tomgang er nogle af de andre typer.

Hvis du ønsker at gøre tjenesten brugerspecifik, skal den Bruger direktiv kan også bruges sammen med brugerens brugernavn. Brug af dette direktiv vil gøre tjenestebrugerens tilladelse afhængig.

Mens ExecStart direktivet indeholder den fulde sti til den eksekverbare. I ovenstående eksempel er scriptfilen myscript.sh er gemt i /home/sam/ vejviser. Dette direktiv styrer faktisk, hvad der skal udføres, når en tjeneste påkaldes af systemd. Hvis kommandoens fulde sti ikke er angivet, vil den automatisk blive løst til at rette absolutte stier som f.eks /usr/local/bin , /usr/bin/, og /beholder . Det er helt i orden at bruge det eksekverbare navn, så længe de er i standardkommandobibliotekerne, men nævn den absolutte sti ellers. Bemærk, at der også kan bruges flere kommandoer, der er adskilt af semikolon (;).

Det [Installere] afsnit er valgfrit; det angiver dog, hvordan tjenesten er aktiveret. Det Efterlyst Af direktiv tager målfilerne på køreniveau som parametre. Forskellige målfiler indikerede forskellige kørselsniveauer af systemet som f.eks sluk , redde , flerbruger , grafisk , og genstart .

Det multi-user.target betyder, at tjenesten vil blive aktiveret, når systemet er i en tilstand til at tillade flerbruger ikke-grafiske sessioner.

3. Aktivering af tjenesten

For at aktivere tjenesten skal du først genindlæse systemd-konfigurationerne vha systemctl nytte.

sudo systemctl daemon-genindlæs

Aktiver derefter tjenesten igen vha systemctl kommando med aktivere .

sudo systemctl aktivere minservice.service

For at bekræfte, tjek tjenestens status ved hjælp af systemctl status kommando.

Tjenesten kører med succes.

Lad os nu læse tekstfilen minfil.txt tjenesten oprettet i /hjem vejviser.

Sådan opretter du en Systemd Service-fil til normal bruger

Proceduren for at oprette servicefilen for en normal bruger ligner metoden til at oprette en servicefil af administratoren. Biblioteket til at gemme servicefilen for normale brugere er dog anderledes. Normale brugere skal placere deres servicefiler i ~/.config/systemd/bruger . Denne mappe skal oprettes ved hjælp af mkdir kommando.

mkdir ~ / .config / systemd / bruger

For at aktivere tjenesten af ​​en normal bruger -bruger kommando er indsat med systemctl i stedet for sudo .

systemctl --bruger dæmon-genindlæs

systemctl --bruger aktivere SERVICE-NAME.service

systemctl --bruger status SERVICE-NAME.service

Det -bruger mulighed bruges til at administrere brugerens systemd servicefiler.

Sådan fjerner du servicefil

For at fjerne servicefilen skal tjenesten først stoppes.

sudo systemctl stop SERVICE-NAME.service

Tjek status vha systemctl status kommando for at vide, om tjenesten er stoppet eller ej. Fjern derefter servicefilen ved hjælp af rm kommando.

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

Genindlæs nu systemd konfiguration.

sudo systemctl daemon-genindlæs

Konklusion

Den tilpassede systemd service er fordelagtig i forskellige scenarier. I denne vejledning lærte vi, hvordan man opretter en brugerdefineret systemd servicefil til en systemadministrator, og hvordan normale brugere kan oprette en servicefil. Desuden ser vi også proceduren for at fjerne servicefilen.