Genstart en tjeneste ved hjælp af systemctl restart Command

Genstart En Tjeneste Ved Hjaelp Af Systemctl Restart Command



Det systemd er en system service manager, der er meget udbredt på Linux. At klare systemd tjenester, den systemctl kommandolinjeværktøjet bruges. Dette værktøj bruges også til at genstarte enhver systemd service.

Tjenester på Linux administreres gennem deres konfigurationsfil. Hvis der foretages ændringer i en tjenestes konfigurationsfil, er det nødvendigt at starte en genstart af tjenesten for at anvende ændringerne. Ved genstart af tjenesten revurderer systemd'en konfigurationsfilen og anvender ændringerne.

I denne vejledning vil jeg gennemgå, hvordan man bruger systemctl til at genstarte en tjeneste i Linux.







Bemærk: Denne vejledning indeholder kommandoer og instruktioner, der udføres på Ubuntu 22.04. Kommandoen vil fungere uden problemer på distributioner, der følger med systemd service manager.



Systemctl genstart kommandoen

Det genstart kommando stopper i det væsentlige en tjeneste og starter den igen. Hvis tjenesten eller enheden ikke er operationel, vil genstartskommandoen starte sin drift.



Genstart-kommandoen fjerner ikke de processer, der er knyttet til tjenesten. Tag eksemplet med filbeskrivelser, som er ikke-negative identifikatorer, der tildeles af operativsystemet til de filer, der åbnes af en tjeneste. Hvis du genstarter en tjeneste, vil filbeskrivelsen, der er knyttet til den pågældende tjeneste, forblive der under genstartsprocessen.





Hvis du vil skylle alle de tilknyttede processer til tjenesten ud, skal du udtrykkeligt gøre det hold op tjenesten og Start det igen.

Sådan genstartes en tjeneste

På Linux kan du genstarte en tjeneste ved at bruge sudo systemctl kommandolinjeværktøj med genstart indstilling og angivelse af dens navn. Den generelle syntaks er angivet nedenfor:



sudo systemctl genstart [ tjenestenavn ]

Du får brug for sudo privilegier til at genstarte en tjeneste.

Lad os for eksempel genstarte ssh service.

sudo systemctl genstart ssh.service

For at genstarte flere tjenester skal du tilføje hvert tjenestenavn efter genstart kommando med et mellemrum.

sudo systemctl genstart ssh.service smbd.service

Andre genstartskommandoer er angivet i tabellen nedenfor:

prøv genstart Den stopper eller starter den eller de angivne tjenester, og hvis tjenesten ikke kører, starter den den ikke
genindlæs eller genstart Genindlæs den eller de understøttede tjenester, og hvis tjenesten ikke understøttes, genstart den og aktiver den
prøv-genindlæs-eller-prøv-genstart Genindlæs den eller de understøttede tjenester, og hvis tjenesten ikke understøttes, genstart den uden at aktivere den

I ovenstående kommandoer er .service forlængelse er valgfri.

Sådan genstartes en tjeneste automatisk

På Linux, hvis en tjeneste fejler, så systemd genstartede det som standard. Ikke desto mindre kan det i mange tilfælde være nødvendigt at ændre den måde, hvorpå en tjeneste genstarter. For eksempel kan man have brug for manuel handling under fejlfindingsprocessen for den skræddersyede tjeneste.

Systemd-enhedsfilerne eller servicefilerne er placeret på /etc/systemd/system eller /lib/systemd/system hovedsageligt afhængig af, hvordan tjenesten er oprettet. Brug følgende kommando for at vise enhedsfilerne på Linux:

ls / lib / systemd / system

Du kan se konfigurationsfilerne for forskellige tjenester. Lad os åbne ssh.service fil ved hjælp af nano redaktør.

sudo nano / lib / systemd / system / ssh.service

Her kan du ændre Genstart indstilling. Som standard er den indstillet til på-fejl . Andre muligheder for at genstarte en tjeneste er angivet nedenfor:

  • Ingen
  • altid
  • på succes
  • på-fejl
  • på-unormalt
  • ved afbrydelse
  • på vagthund

En anden mulighed i enhedsservicefilen er GenstartSek som bruges til at angive antallet af sekunder, hvorefter tjenesten genstartes.

[ Service ]

Genstart = altid

GenstartSek = 5

Disse instruktioner betyder, at tjenesten genstartes ved opstart og, hvis den afbrydes, genstartes efter 5 sekunder.

Når du har ændret indstillingen, skal du udføre følgende kommando for at anvende ændringerne.

sudo systemctl reload-daemon

Andre vigtige indstillinger at tage i betragtning er StartgrænseIntervalSek og StartLimitBurst . Disse muligheder er nyttige til at indstille den maksimale tid og maksimale genforsøg for at genstarte en tjeneste.

[ Enhed ]

StartgrænseIntervalSek = 300

StartLimitBurst = 4

Ovenstående instruktion indikerer, at systemd automatisk stopper med at forsøge at genstarte en tjeneste, hvis den ikke starter efter 300 sekunder og 4 genforsøg.

For at kontrollere, om tjenesten genstarter efter 5 sekunder eller ej, skal du afbryde tjenesten ved hjælp af tjenestens PID og dræbe kommando.

sudo dræbe -9 [ PID ]

Efter 5 sekunder vil tjenesten blive genstartet; brug journalctl kommando for at kontrollere status for ssh.service .

journalctl -i ssh.service

Sådan genstartes en tjeneste, når afhængig tjeneste genstarter

På Linux er mange tjenester indbyrdes afhængige, og på samme måde skal de genstartes, når en afhængig tjeneste genstartes.

Der er tre forskellige muligheder i enhedstjenestefilen for at genstarte en tjeneste, med en afhængig tjeneste genstartet.

  • Del af
  • BindsTo
  • Kræver

Alle disse muligheder udfører den samme opgave.

Lad os tage et eksempel på ssh.service, som afhænger af apparmor.service; et Linux-sikkerhedsmodul for at give den nødvendige adgang. At liste afhængighederne af en tjeneste i Linux brug systemctl med listeafhængigheder kommando og tjenestenavn.

systemctl liste-afhængigheder ssh.service

Så hvis du vil genstarte ssh.service, når du genstarter apparmor.service, skal du inkludere indstillingen PartOf, BindsTo eller Requires sammen med tjenestenavnet i [Unit]-sektionen af ​​apparmor.service-filen.

Åbn apparmor.service-filen.

sudo nano / lib / systemd / system / apparmor.service

Tilføj følgende linje i afsnittet [Enhed].

Del af =ssh.service

Gem filen og udfør kommandoen daemon-reload.

sudo systemctl daemon-genindlæs

Genstart nu ssh.service og tjek derefter apparmor.service log.

Du vil bemærke apparmor.service genstartet på samme tid ssh.service genstartet.

Konklusion

For at genstarte en tjeneste eller tjenester på Linux skal du systemctl kommandoen bruges sammen med genstart mulighed. Det systemctl er et kommandolinjeværktøj, der bruges til at administrere systemd-tjenester. Det genstart mulighed starter en tjeneste og stopper den derefter, aktiverer en inaktiv tjeneste. Du kan dog genstarte en tjeneste uden at aktivere den ved at bruge prøv genstart mulighed.