Tjänster på Linux hanteras genom deras konfigurationsfil. Om ändringar görs i en tjänsts konfigurationsfil är det nödvändigt att initiera en omstart av tjänsten för att tillämpa ändringarna. Vid omstart av tjänsten utvärderar systemd konfigurationsfilen och tillämpar ändringarna.
I den här guiden kommer jag att gå igenom hur man använder systemctl för att starta om en tjänst i Linux.
Notera: Den här guiden innehåller kommandon och instruktioner som körs på Ubuntu 22.04. Kommandot kommer att fungera utan problem på distributioner som följer med systemd service manager.
Systemctl-omstartkommandot
De omstart kommandot stoppar i huvudsak en tjänst och startar den igen. Om tjänsten eller enheten inte är i drift kommer kommandot omstart att initiera dess drift.
Kommandot omstart tar inte bort de processer som är kopplade till tjänsten. Ta exemplet med filbeskrivningar, som är icke-negativa identifierare som tilldelas av operativsystemet till filerna som öppnas av en tjänst. Om du startar om en tjänst kommer filbeskrivningen som är länkad till den tjänsten att finnas kvar under omstartsprocessen.
Om du vill spola ut alla länkade processer till tjänsten måste du uttryckligen göra det sluta tjänsten och Start det igen.
Hur man startar om en tjänst
På Linux kan du starta om en tjänst genom att använda sudo systemctl kommandoradsverktyg med omstart alternativet och ange dess namn. Den allmänna syntaxen ges nedan:
sudo systemctl omstart [ Service namn ]
Du kommer behöva sudo privilegier för att starta om en tjänst.
Låt oss till exempel starta om ssh service.
sudo systemctl starta om ssh.serviceFör att starta om flera tjänster, lägg till varje tjänstnamn efter omstart kommando med ett mellanslag.
sudo systemctl starta om ssh.service smbd.serviceAndra omstartskommandon finns i tabellen nedan:
försök-starta om | Den stoppar eller startar den angivna tjänsten eller tjänsterna och om tjänsten inte körs startar den inte den |
ladda om eller starta om | Ladda om den eller de tjänster som stöds och om tjänsten inte stöds starta om den och aktivera den |
försök-ladda om-eller-försök-starta om | Ladda om den eller de tjänster som stöds och om tjänsten inte stöds starta om den utan att aktivera den |
I ovanstående kommandon, .service förlängning är valfri.
Hur man automatiskt startar om en tjänst
På Linux, om en tjänst misslyckas, då systemd startade om det som standard. Icke desto mindre kan det i många fall vara nödvändigt att ändra sättet på vilket en tjänst startar om. Till exempel kan man behöva manuell åtgärd under felsökningsprocessen för den skräddarsydda tjänsten.
Systemd-enhetsfilerna eller tjänstefilerna finns på /etc/systemd/system eller /lib/systemd/system främst beroende på hur tjänsten skapas. För att lista enhetsfilerna på Linux, använd följande kommando:
ls / lib / systemd / systemetDu kan se konfigurationsfilerna för olika tjänster. Låt oss öppna ssh.service fil med hjälp av nano redaktör.
sudo nano / lib / systemd / systemet / ssh.serviceHär kan du ändra Omstart miljö. Som standard är den inställd på vid misslyckande . Andra alternativ för att starta om en tjänst listas nedan:
- Nej
- alltid
- på framgång
- vid misslyckande
- på onormalt
- vid abort
- på vakthund
Ett annat alternativ i enhetens servicefil är Starta omSek som används för att ange antalet sekunder efter vilket tjänsten ska starta om.
[ Service ]Omstart =alltid
Starta omSek = 5
Dessa instruktioner innebär att tjänsten startas om vid uppstart och, om den avbryts, startas om efter 5 sekunder.
När du har ändrat inställningen, kör följande kommando för att tillämpa ändringarna.
sudo systemctl reload-daemonAndra viktiga inställningar att ta hänsyn till är StartLimitIntervalSec och StartLimitBurst . Dessa alternativ är användbara för att ställa in maximal tid och maximala försök att starta om en tjänst.
[ Enhet ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Ovanstående instruktion indikerar att systemd automatiskt kommer att sluta försöka starta om en tjänst om den inte startar efter 300 sekunder och 4 försök igen.
För att kontrollera om tjänsten startar om efter 5 sekunder eller inte, avbryt tjänsten med hjälp av tjänstens PID och döda kommando.
sudo döda -9 [ PID ]Efter 5 sekunder kommer tjänsten att startas om; Använd journalctl kommando för att kontrollera statusen för ssh.service .
journalctl -i ssh.service
Hur man startar om en tjänst när beroende tjänst startar om
På Linux är många tjänster beroende av varandra, och på samma sätt måste de startas om när en beroende tjänst startas om.
Det finns tre olika alternativ i enhetstjänstfilen för att starta om en tjänst, med en beroende tjänst omstartad.
- Del av
- BindsTo
- Kräver
Alla dessa alternativ utför samma uppgift.
Låt oss ta ett exempel på ssh.service som beror på apparmor.service; en Linux-säkerhetsmodul för att ge nödvändig åtkomst. För att lista beroenden för en tjänst i Linux-användning systemctl med listberoenden kommando och tjänstnamn.
systemctl listberoenden ssh.service
Så om du vill starta om ssh.service när du startar om apparmor.service, måste du inkludera alternativet PartOf, BindsTo eller Requires tillsammans med tjänstens namn i avsnittet [Unit] i apparmor.service-filen.
Öppna filen apparmor.service.
sudo nano / lib / systemd / systemet / apparmor.serviceLägg till följande rad i avsnittet [Enhet].
Del av =ssh.tjänst
Spara filen och kör kommandot daemon-reload.
sudo systemctl daemon-reloadStarta nu om ssh.service och kontrollera sedan apparmor.service logga.
Du kommer att märka apparmor.service startade om samtidigt ssh.service startas om.
Slutsats
För att starta om en tjänst eller tjänster på Linux, systemctl kommandot används med omstart alternativ. De systemctl är ett kommandoradsverktyg som används för att hantera systemd-tjänster. De omstart alternativet startar en tjänst och stoppar den, aktiverar en inaktiv tjänst. Du kan dock starta om en tjänst utan att aktivera den genom att använda försök-starta om alternativ.