Palveluiden hallinta systemctl-komennolla VPS-palvelimellasi
VPS:lläsi on ohjelmia, joiden on oltava aina käynnissä: SSH-palvelin, verkkopalvelin, tietokanta. Tällaisia ohjelmia kutsutaan palveluiksi. Debianissa, Ubuntussa, AlmaLinuxissa ja Rocky Linuxissa systemd käynnistää ja valvoo niitä, ja systemd:tä ohjataan komennolla systemctl. Tässä ovat komennot, joita tarvitset useimmin.
Palvelun tila
systemctl status nginx
Päätteen .service voit jättää pois. Lue tuloste ylhäältä alas:
- Nimen edessä oleva pallo on vihreä, kun palvelu on käynnissä, valkoinen, kun se on pysäytetty, ja punainen, kun se on epäonnistunut.
- Loaded kertoo, käynnistyykö palvelu järjestelmän käynnistyessä (
enabled) vai ei (disabled). - Active kertoo, onko palvelu nyt käynnissä (
active (running)), pysäytetty (inactive (dead)) vai epäonnistunut (failed), ja mistä lähtien. - Alimpana ovat palvelun lokin viimeiset rivit. Niistä näkee usein jo, miksi jokin menee pieleen.
Käynnistäminen, pysäyttäminen ja uudelleenlataus
| Komento | Mitä se tekee |
|---|---|
sudo systemctl start nginx | Käynnistää nyt |
sudo systemctl stop nginx | Pysäyttää nyt |
sudo systemctl restart nginx | Pysäyttää ja käynnistää uudelleen |
sudo systemctl reload nginx | Lukee asetukset uudelleen pysäyttämättä palvelua |
Ero komentojen restart ja reload välillä on tärkeä. Restartissa palvelu pysähtyy hetkeksi, ja jos uusissa asetuksissa on virhe, se ei enää käynnisty ja verkkosivustosi on alhaalla. Reloadissa palvelu pysyy käynnissä; virheen sattuessa nginx pitää vanhat asetukset voimassa. Testaa siksi asetukset ensin (sudo nginx -t, sudo sshd -t) ja käytä sitten reloadia. Kaikki palvelut eivät tue reloadia; sudo systemctl reload-or-restart valitsee itse.
Järjestelmän käynnistyessä: enable ja disable
Käynnistäminen ja "käynnistäminen järjestelmän käynnistyessä" ovat kaksi eri asiaa. Jos käynnistät palvelun pelkällä start-komennolla, se on seuraavan uudelleenkäynnistyksen jälkeen taas poissa, esimerkiksi ytimen päivityksen jälkeen.
| Komento | Mitä se tekee |
|---|---|
sudo systemctl enable --now nginx | Käynnistää nyt ja jatkossa aina järjestelmän käynnistyessä. Käytä tätä uudelle palvelulle |
sudo systemctl disable --now nginx | Pysäyttää nyt eikä käynnistä enää järjestelmän käynnistyessä |
systemctl is-enabled nginx | Näyttää, käynnistyykö palvelu järjestelmän käynnistyessä |
Mikä on vialla? Ja mitä on käynnissä?
systemctl --failed
Tämä näyttää kaikki epäonnistuneet palvelut. Listan pitäisi olla tyhjä. Tarkista se jokaisen uudelleenkäynnistyksen ja päivityksen jälkeen. Kun olet korjannut ongelman, poista ilmoitus komennolla sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningnäyttää kaikki käynnissä olevat palvelut. Jos et tunnista jotakin niistä, selvitä, mitä se tekee. Palvelu, jota et tarvitse, on turha sisäänpääsyreitti.systemctl list-timersnäyttää systemd:n ajastetut tehtävät sekä sen, milloin ne ajettiin viimeksi ja milloin ne ajetaan seuraavan kerran. Näin näet esimerkiksi, toimivatko automaattisten päivitysten tai varmenteiden uusimisen ajastimet.
Palvelun lokit
Jos haluat nähdä enemmän kuin muutaman rivin, jotka systemctl status näyttää, käytä komentoa journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Ensimmäinen näyttää kaiken nginxin viimeisen tunnin ajalta, toinen vain virheet viimeisimmän uudelleenkäynnistyksen jälkeen. Lisää komentoja löydät artikkelista Lokien lukeminen journalctl:llä ja docker logsilla.
Palvelun asetusten muuttaminen
Älä koskaan muokkaa paketin unit-tiedostoa (hakemistossa /usr/lib/systemd/system/), koska päivitys korvaa sen. Käytä komentoa sudo systemctl edit nginx: se luo pienen tiedoston, jossa on vain omat muutoksesi, ja saa systemd:n lukemaan sen uudelleen. Lopulliset voimassa olevat asetukset näet komennolla systemctl cat nginx.
sudo systemctl reboot tai VPS-näkymän Käynnistä uudelleen -toiminnolla. Pakotettu sammutus on kuin vetäisit töpselin seinästä: palvelut eivät ehdi pysähtyä hallitusti ja tietokanta voi vahingoittua. Katso VPS-näkymä: käynnistys ja sammutus, kaaviot, järjestelmä ja loki.AlmaLinuxissa ja Rocky Linuxissa systemctl toimii täsmälleen samalla tavalla, mutta osa palveluista on nimetty toisin: SSH-palvelun nimi on siellä sshd eikä ssh, Apachen nimi on httpd ja palomuurin firewalld.
Haluatko oppia lisää? Käy ilmainen kurssi VPS ja Linux-palvelimen ylläpito, oppitunti 6.1 Palveluiden hallinta systemd:llä tai oppitunti 6.2 Lokien lukeminen journalctl:llä.
