Administrer tjenester med systemctl på din VPS
På VPS-en din kjører det programmer som alltid må være der: SSH-serveren, en webserver, en database. Slike programmer kalles tjenester. På Debian, Ubuntu, AlmaLinux og Rocky Linux er det systemd som starter og overvåker dem, og du styrer systemd med kommandoen systemctl. Her er kommandoene du oftest trenger.
Statusen til en tjeneste
systemctl status nginx
Endelsen .service kan du utelate. Les utdataene ovenfra og ned:
- Den lille prikken foran navnet er grønn når tjenesten kjører, hvit når den er stoppet og rød når den har feilet.
- Loaded viser om tjenesten starter ved oppstart (
enabled) eller ikke (disabled). - Active viser om den kjører nå (
active (running)), er stoppet (inactive (dead)) eller har feilet (failed), og siden når. - Nederst står de siste linjene fra loggen til tjenesten. Ofte står det allerede der hvorfor noe går galt.
Starte, stoppe og laste inn på nytt
| Kommando | Hva den gjør |
|---|---|
sudo systemctl start nginx | Starter nå |
sudo systemctl stop nginx | Stopper nå |
sudo systemctl restart nginx | Stopper og starter igjen |
sudo systemctl reload nginx | Leser konfigurasjonen på nytt uten å stoppe |
Forskjellen mellom restart og reload er viktig. Ved en restart stopper tjenesten et øyeblikk, og er det en feil i den nye konfigurasjonen, starter den ikke igjen og nettstedet ditt er nede. Ved en reload fortsetter tjenesten å kjøre; nginx beholder den gamle konfigurasjonen hvis det er en feil. Test derfor konfigurasjonen først (sudo nginx -t, sudo sshd -t) og bruk deretter reload. Ikke alle tjenester støtter reload; sudo systemctl reload-or-restart velger selv.
Ved oppstart: enable og disable
Å starte og å "starte ved oppstart" er to forskjellige ting. Starter du en tjeneste bare med start, er den borte igjen etter neste omstart, for eksempel etter en kjerneoppdatering.
| Kommando | Hva den gjør |
|---|---|
sudo systemctl enable --now nginx | Starter nå og heretter ved oppstart. Bruk dette for en ny tjeneste |
sudo systemctl disable --now nginx | Stopper nå og starter ikke lenger ved oppstart |
systemctl is-enabled nginx | Viser om tjenesten starter ved oppstart |
Hva er galt? Og hva kjører?
systemctl --failed
Dette viser alle tjenester som har feilet. Listen skal være tom. Sjekk den etter hver omstart og hver oppgradering. Har du løst problemet, fjerner du meldingen med sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningviser alle tjenester som kjører. Kjenner du ikke igjen en av dem, finn ut hva den gjør. En tjeneste du ikke trenger, er en unødvendig inngang.systemctl list-timersviser de planlagte oppgavene til systemd, med når de sist kjørte og når de kjører neste gang. Slik ser du for eksempel om timerne for automatiske oppdateringer eller fornying av sertifikater går.
Loggene til en tjeneste
Vil du se mer enn de få linjene i systemctl status, bruk journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Den første viser alt fra nginx den siste timen, den andre bare feilene siden siste omstart. Flere kommandoer finner du i Les logger med journalctl og docker logs.
Endre innstillingene til en tjeneste
Unit-filen fra en pakke (i /usr/lib/systemd/system/) skal du aldri endre, fordi en oppdatering overskriver den. Bruk sudo systemctl edit nginx: det lager en liten fil med bare dine endringer og får systemd til å lese den inn på nytt. Hva som til slutt gjelder, ser du med systemctl cat nginx.
sudo systemctl reboot, eller med Start på nytt i VPS-skjermen. Tvungen avslåing er som å trekke ut stikkontakten: tjenestene får ikke sjansen til å stoppe pent, og en database kan bli skadet. Se VPS-skjermen: av og på, grafer, system og logg.På AlmaLinux og Rocky Linux fungerer systemctl akkurat likt, men noen tjenester har andre navn: SSH-tjenesten heter der sshd i stedet for ssh, Apache heter httpd og brannmuren firewalld.
Vil du lære mer? Ta det gratis kurset VPS og Linux-serveradministrasjon, leksjon 6.1 Administrer tjenester med systemd eller leksjon 6.2 Les logger med journalctl.
