Administrer tjenester med systemctl på din VPS
På din VPS kører der programmer, som altid skal være der: SSH-serveren, en webserver, en database. Den slags programmer kaldes tjenester. På Debian, Ubuntu, AlmaLinux og Rocky Linux er det systemd, der starter og overvåger dem, og du styrer systemd med kommandoen systemctl. Her er de kommandoer, du oftest får brug for.
Status for en tjeneste
systemctl status nginx
Endelsen .service kan du udelade. Læs outputtet oppefra og ned:
- Den lille prik foran navnet er grøn, hvis tjenesten kører, hvid, hvis den er stoppet, og rød, hvis den er fejlet.
- Loaded viser, om tjenesten starter ved opstart (
enabled) eller ej (disabled). - Active viser, om den kører nu (
active (running)), er stoppet (inactive (dead)) eller er fejlet (failed), og siden hvornår. - Nederst står de seneste linjer fra tjenestens log. Ofte kan du allerede se der, hvorfor noget går galt.
Start, stop og genindlæs
| Kommando | Hvad den gør |
|---|---|
sudo systemctl start nginx | Start nu |
sudo systemctl stop nginx | Stop nu |
sudo systemctl restart nginx | Stop og start igen |
sudo systemctl reload nginx | Læs konfigurationen igen uden at stoppe |
Forskellen på restart og reload er vigtig. Ved en restart stopper tjenesten kortvarigt, og er der en fejl i den nye konfiguration, starter den ikke igen, og din hjemmeside er nede. Ved en reload bliver tjenesten ved med at køre; ved en fejl beholder nginx den gamle konfiguration. Test derfor først konfigurationen (sudo nginx -t, sudo sshd -t), og brug så reload. Ikke alle tjenester understøtter reload; sudo systemctl reload-or-restart vælger selv.
Ved opstart: enable og disable
At starte en tjeneste og at "starte den ved opstart" er to forskellige ting. Starter du kun en tjeneste med start, er den væk igen efter næste genstart, for eksempel efter en kerneopdatering.
| Kommando | Hvad den gør |
|---|---|
sudo systemctl enable --now nginx | Start nu og fremover ved opstart. Brug dette til en ny tjeneste |
sudo systemctl disable --now nginx | Stop nu og ikke længere ved opstart |
systemctl is-enabled nginx | Viser, om tjenesten starter ved opstart |
Hvad er der galt? Og hvad kører der?
systemctl --failed
Dette viser alle fejlede tjenester. Listen bør være tom. Tjek den efter hver genstart og hver opgradering. Har du løst problemet, fjerner du meldingen med sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningviser alle kørende tjenester. Kender du ikke en af dem, så find ud af, hvad den gør. En tjeneste, du ikke har brug for, er en unødvendig indgang.systemctl list-timersviser systemd's planlagte opgaver, med hvornår de sidst kørte, og hvornår de kører igen. Her kan du for eksempel se, om timerne til automatiske opdateringer eller fornyelse af certifikater kører.
En tjenestes logs
Vil du se mere end de få linjer i systemctl status, så brug journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Den første viser alt fra nginx i den seneste time, den anden kun fejlene siden sidste genstart. Flere kommandoer finder du i Læs logs med journalctl og docker logs.
Tilpas en tjenestes indstillinger
En pakkes unit-fil (i /usr/lib/systemd/system/) skal du aldrig ændre, for en opdatering overskriver den. Brug sudo systemctl edit nginx: det opretter en lille fil med kun dine ændringer og får systemd til at læse den igen. Hvad der i sidste ende gælder, ser du med systemctl cat nginx.
sudo systemctl reboot eller med Genstart på VPS-skærmen. Tvungen slukning svarer til at trække stikket ud: tjenesterne får ikke mulighed for at stoppe pænt, og en database kan tage skade. Se VPS-skærmen: tænd og sluk, grafer, system og log.På AlmaLinux og Rocky Linux virker systemctl præcis på samme måde, men nogle tjenester hedder noget andet: SSH-tjenesten hedder sshd i stedet for ssh, Apache hedder httpd, og firewallen hedder firewalld.
Vil du lære mere? Tag det gratis kursus VPS og Linux-serveradministration, lektion 6.1 Administrer tjenester med systemd eller lektion 6.2 Læs logs med journalctl.
