Hur man hanterar tjänster med systemctl på en Linux VPS

systemctl är det huvudsakliga verktyget för att hantera tjänster på de flesta moderna Linux VPS-distributioner. Det kontrollerar tjänster som hanteras av systemd, inklusive webbservrar, databaser, bots, spelserver-demoner, övervakningsverktyg och anpassade tjänster du skapar själv.

I exemplen nedan, ersätt nginx med den tjänst du hanterar. Vanliga tjänstenamn inkluderar nginx, apache2, mariadb, mysql, docker, sshd, och anpassade namn som arkserver eller discordbot.

 

Kontrollera en tjänst

Använd status innan du startar om en tjänst. Det visar om tjänsten körs, om den är aktiverad vid start, och senaste felutdata.

sudo systemctl status nginx

Skärmdumpen nedan använder SSH-tjänsten som exempel; samma utdataformat gäller för andra systemd-tjänster.

Ubuntu VPS-terminal som visar systemctl statusutdata för SSH-tjänsten

Om utdata säger failed, läs fellinjerna innan du startar om det upprepade gånger.

Du kan också visa loggar med journalctl:

sudo journalctl -u nginx --since "30 minutes ago"

Följ live-loggar medan du startar om eller testar tjänsten:

sudo journalctl -u nginx -f

 

Starta, stoppa, starta om och ladda om

KommandoVad det gör
sudo systemctl start nginxStartar en stoppad tjänst.
sudo systemctl stop nginxStoppar en körande tjänst.
sudo systemctl restart nginxStoppar och startar tjänsten igen.
sudo systemctl reload nginxLaddar om konfigurationen utan en fullständig omstart, om tjänsten stödjer omladdningar.
sudo systemctl reload-or-restart nginxLaddar om om möjligt, annars startar om.

Använd reload när du bara ändrat en konfigurationsfil och tjänsten stödjer det. Använd restart när applikationen behöver en fullständig stopp/start för att ta upp ändringar.

 

Aktivera eller inaktivera start vid uppstart

Att starta en tjänst nu och aktivera den vid uppstart är olika åtgärder. Om du vill att en tjänst ska återkomma efter en VPS-omstart, aktivera den.

sudo systemctl enable nginx
sudo systemctl start nginx

För att aktivera och starta den med ett kommando:

sudo systemctl enable --now nginx

För att stoppa den från att starta automatiskt vid uppstart:

sudo systemctl disable nginx

 

Starta om flera tjänster

Du kan ange mer än ett tjänstenamn till många systemctl-kommandon:

sudo systemctl restart nginx php8.2-fpm mariadb

Detta är användbart efter att ha ändrat en stack där flera tjänster är beroende av varandra, såsom en webbserver, PHP-FPM och databas.

 

Använda wildcards

systemctl kan matcha tjänstenamn med wildcards. Detta är användbart, men använd det försiktigt eftersom det kan påverka fler tjänster än du avsåg.

Till exempel, detta visar alla matchande PHP-FPM-tjänster:

systemctl list-units 'php*-fpm.service'

Efter att ha kontrollerat matchningarna kan du starta om matchande tjänster:

sudo systemctl restart 'php*-fpm.service'

Lista alltid matchningarna först innan du använder ett wildcard med restart, stop, eller disable.

 

Skapa en anpassad tjänst

Du kan skapa en anpassad systemd-tjänst för en spelserver, bot eller skript så att den startar vid uppstart och kan hanteras med systemctl.

Skapa en enhetsfil i /etc/systemd/system/:

sudo nano /etc/systemd/system/myserver.service

En enkel tjänstfil ser ut så här:

[Unit]
Description=My custom server
After=network.target

[Service]
Type=simple
User=myuser
WorkingDirectory=/home/myuser/myserver
ExecStart=/home/myuser/myserver/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Efter att ha skapat eller ändrat en tjänstfil, ladda om systemd så att den ser den nya enheten:

sudo systemctl daemon-reload

Aktivera och starta den sedan:

sudo systemctl enable --now myserver

Kontrollera den med:

sudo systemctl status myserver
sudo journalctl -u myserver -f

Om tjänsten misslyckas, kontrollera sökvägen i ExecStart, User, filbehörigheter, och om startskriptet körs manuellt innan du försöker köra det genom systemd.

  • 0 användare blev hjälpta av detta svar
Hjälpte svaret dig?

Relaterade artiklar

Hur man ansluter till en Linux VPS med SSH

SSH är det vanliga sättet att hantera en Linux VPS. Det ger dig en terminal på servern så att du...

Hur man uppdaterar paket på en Linux VPS

Att hålla paketen uppdaterade hjälper till att åtgärda säkerhetsproblem och håller serververktyg...

Hur man skapar en sudo-användare på en Linux VPS

En sudo-användare låter dig hantera en Linux VPS utan att logga in som root för varje uppgift....

Hur man säkrar SSH på en Linux VPS

SSH är det huvudsakliga sättet att hantera en Linux VPS, så det bör säkras innan servern används...

Hur man kontrollerar diskutrymme på en Linux VPS

Problem med diskutrymme kan stoppa uppdateringar, säkerhetskopior, loggar, databaser och...