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.serviceFor at genstarte flere tjenester skal du tilføje hvert tjenestenavn efter genstart kommando med et mellemrum.
sudo systemctl genstart ssh.service smbd.serviceAndre 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 / systemDu 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.serviceHer 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-daemonAndre 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.serviceTilføj følgende linje i afsnittet [Enhed].
Del af =ssh.service
Gem filen og udfør kommandoen daemon-reload.
sudo systemctl daemon-genindlæsGenstart 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.