Driftsättning av Linuxservrar och SSH på djupet · Lektion

Hantera systemtjänster med systemd

Styr de långvariga program som driver en Linux-server med systemd: starta, stoppa, aktivera och inspektera tjänster, läs deras loggar med journalctl och förstå hur enheter passar in i processhanteringen.

Lektion 4 av 413 steg

Hantera systemtjänster med systemd är en gratis lektion i Driftsättning av Linuxservrar och SSH på djupet på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Driftsättning av Linuxservrar och SSH på djupet, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Driftsättning av Linuxservrar och SSH på djupet innehåller totalt 4 lektioner.

Tjänster jämfört med vanliga processer

Du har hanterat enskilda processer och schemalagda aktiviteter. Men programmen som utgör en server — webbservrar, databaser och SSH — körs som tjänster: bakgrundsprocesser som bör starta vid uppstart och startas om vid fel.

I moderna Linux-system hanteras tjänster av systemd, system- och tjänstehanteraren.

Vad systemd hanterar

systemd organiserar allt i units. Den vanligaste typen är .service-uniten, som beskriver hur en bakgrundsprocess ska köras.

Kommandot systemctl är ditt huvudsakliga gränssnitt för att inspektera och styra dessa units.

systemctl --version

Kontrollera tjänstens status

systemctl status visar om en tjänst körs, dess huvudprocess-ID, de senaste loggraderna och om den är aktiverad vid uppstart.

Detta är vanligtvis det första kommandot du kör när du felsöker en tjänst.

systemctl status nginx

Starta och stoppa tjänster

Du styr en tjänsts körstatus med start, stop och restart. Dessa ändringar börjar gälla omedelbart men ändrar inte beteendet vid uppstart.

Använd reload när en tjänst stöder omläsning av sin konfiguration utan att anslutningar kopplas ned.

sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginx

Aktivera tjänster vid uppstart

enable gör att en tjänst startas automatiskt när servern startar; disable tar bort den från uppstarten. Detta är oberoende av om den körs just nu.

Den praktiska flaggan --now aktiverar och startar tjänsten i ett steg.

sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginx

Visa tjänster

Om du vill se vad som är installerat och körs kan du lista unit-filerna eller aktiva units.

  • list-units --type=service — tjänster som för närvarande är inlästa
  • list-unit-files --type=service — alla installerade tjänster och deras aktiveringsstatus
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=service

Läs loggar med journalctl

systemd samlar tjänsternas utdata i journalen. Fråga den med journalctl.

  • -u nginx — endast denna tjänst
  • -f — följ live
  • -e — hoppa till slutet
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'

En unit-fils anatomi

En tjänst definieras av en unit-fil, vanligtvis i /etc/systemd/system/ eller /lib/systemd/system/. Den har tre viktiga sektioner: [Unit], [Service] och [Install].

Raden ExecStart talar om för systemd vilket kommando som ska köras.

[Unit]
Description=My App
After=network.target

[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure

[Install]
WantedBy=multi-user.target

Skapa en egen tjänst

Om du vill köra ditt eget program som en tjänst placerar du en unit-fil i /etc/systemd/system/, läser om systemd så att den upptäcker den nya filen och aktiverar och startar den sedan.

daemon-reload krävs efter varje ändring av en unit-fil.

sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myapp

Starta om automatiskt vid fel

En av systemds bästa funktioner är automatisk återställning. Direktivet Restart= talar om att en kraschad tjänst ska startas om.

  • Restart=on-failure — endast efter en avslutning med annan kod än noll
  • Restart=always — varje gång den stoppas
  • RestartSec=5 — vänta innan nästa försök
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5

Bästa praxis

Hantera tjänster med säkerhet:

  • Skilj på körning (start) och uppstart (enable)
  • Kör daemon-reload efter redigering av unit-filer
  • Använd journalctl -u för felsökning i stället för utspridda loggfiler
  • Lägg till Restart=on-failure för motståndskraftiga anpassade program

Snabbtest

Testa dina kunskaper om systemd.

Sammanfattning

Du kan nu hantera servertjänster med systemd:

  • status, start, stop, restart, reload
  • enable/disable för beteendet vid uppstart
  • journalctl -u för tjänsteloggar
  • Anpassade .service-unit-filer med Restart= för motståndskraft

Detta kompletterar dina kunskaper om process- och aktivitetshantering med långkörande bakgrundsprocesser.

Gratis att börja

Lär dig Driftsättning av Linuxservrar och SSH på djupet med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Hantera systemtjänster med systemd” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Driftsättning av Linuxservrar och SSH på djupet, inklusive ”Hantera systemtjänster med systemd”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Driftsättning av Linuxservrar och SSH på djupet innehåller totalt 4 lektioner.

Vad lär jag mig i ”Hantera systemtjänster med systemd”?

Styr de långvariga program som driver en Linux-server med systemd: starta, stoppa, aktivera och inspektera tjänster, läs deras loggar med journalctl och förstå hur enheter passar in i processhanterin… Ni övar på Driftsättning av Linuxservrar och SSH på djupet med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Driftsättning av Linuxservrar och SSH på djupet?

Du behöver inga förkunskaper. Utbildningen i Driftsättning av Linuxservrar och SSH på djupet på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Hantera systemtjänster med systemd”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Driftsättning av Linuxservrar och SSH på djupet-lektionen?

Ja. Varje Driftsättning av Linuxservrar och SSH på djupet-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Hantera användare och grupper
  2. Övervaka systemprocesser
  3. Schemalagda uppgifter med Cron
  4. Hantera systemtjänster med systemd
← Tillbaka till Driftsättning av Linuxservrar och SSH på djupet