Hantera tjänster med systemctl på din VPS
På din VPS körs program som alltid måste finnas där: SSH-servern, en webbserver, en databas. Sådana program kallas tjänster. På Debian, Ubuntu, AlmaLinux och Rocky Linux är det systemd som startar och övervakar dem, och du styr systemd med kommandot systemctl. Här är de kommandon du behöver oftast.
Status för en tjänst
systemctl status nginx
Du kan utelämna ändelsen .service. Läs utdata uppifrån och ner:
- Pricken framför namnet är grön om tjänsten körs, vit om den är stoppad och röd om den har misslyckats.
- Loaded visar om tjänsten startar vid uppstart (
enabled) eller inte (disabled). - Active visar om den körs just nu (
active (running)), är stoppad (inactive (dead)) eller har misslyckats (failed), och sedan när. - Längst ner står de senaste raderna från tjänstens logg. Ofta ser du redan där varför något går fel.
Starta, stoppa och ladda om
| Kommando | Vad det gör |
|---|---|
sudo systemctl start nginx | Starta nu |
sudo systemctl stop nginx | Stoppa nu |
sudo systemctl restart nginx | Stoppa och starta igen |
sudo systemctl reload nginx | Läsa in konfigurationen på nytt utan att stoppa |
Skillnaden mellan restart och reload är viktig. Vid en restart stoppas tjänsten en kort stund, och om den nya konfigurationen innehåller ett fel startar den inte igen och din webbplats ligger nere. Vid en reload fortsätter tjänsten att köras; vid ett fel behåller nginx den gamla konfigurationen. Testa därför först konfigurationen (sudo nginx -t, sudo sshd -t) och använd sedan reload. Alla tjänster har inte stöd för reload; sudo systemctl reload-or-restart väljer själv.
Vid uppstart: enable och disable
Att starta och att "starta vid uppstart" är två olika saker. Om du bara startar en tjänst med start är den borta igen efter nästa omstart, till exempel efter en kerneluppdatering.
| Kommando | Vad det gör |
|---|---|
sudo systemctl enable --now nginx | Starta nu och i fortsättningen vid uppstart. Använd detta för en ny tjänst |
sudo systemctl disable --now nginx | Stoppa nu och inte längre vid uppstart |
systemctl is-enabled nginx | Visar om tjänsten startar vid uppstart |
Vad är fel? Och vad körs?
systemctl --failed
Detta visar alla misslyckade tjänster. Listan ska vara tom. Titta på den efter varje omstart och varje uppgradering. När du har löst problemet tar du bort meddelandet med sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningvisar alla tjänster som körs. Om du inte känner igen en, ta reda på vad den gör. En tjänst du inte behöver är en onödig ingång.systemctl list-timersvisar systemds schemalagda uppgifter, med när de senast kördes och när de körs nästa gång. Där ser du till exempel om timrarna för automatiska uppdateringar eller förnyelse av certifikat är igång.
Loggarna för en tjänst
Vill du se mer än de få raderna i systemctl status, använd journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Det första visar allt från nginx under den senaste timmen, det andra bara felen sedan den senaste omstarten. Fler kommandon hittar du i Läsa loggar med journalctl och docker logs.
Ändra inställningar för en tjänst
Ett pakets unit-fil (i /usr/lib/systemd/system/) ska du aldrig ändra, eftersom en uppdatering skriver över den. Använd sudo systemctl edit nginx: det skapar en liten fil med bara dina ändringar och låter systemd läsa in den på nytt. Vad som till slut gäller ser du med systemctl cat nginx.
sudo systemctl reboot, eller med Starta om i VPS-vyn. Tvingad avstängning är som att dra ur kontakten: tjänsterna får ingen chans att stoppa ordentligt och en databas kan skadas. Se VPS-vyn: på och av, grafer, system och logg.På AlmaLinux och Rocky Linux fungerar systemctl precis likadant, men vissa tjänster heter något annat: SSH-tjänsten heter där sshd i stället för ssh, Apache heter httpd och brandväggen firewalld.
Vill du lära dig mer? Gå den kostnadsfria kursen VPS och Linux-serveradministration, lektion 6.1 Hantera tjänster med systemd eller lektion 6.2 Läsa loggar med journalctl.
