Kuidas hallata Linuxi teenuseid systemctl käsuga – täielik juhend algajatele ja edasijõudnutele

目次

1. Sissejuhatus

Linuxit kasutades tekib tihti vajadus kontrollida teenuste olekut või näha kõiki töötavaid protsesse korraga. Nendes olukordades on eriti kasulik systemctl käsk.

See käsk töötab koos Linuxi alglaadimissüsteemi ja teenusehalduriga “systemd” ning võimaldab laialdasi funktsioone: teenuste (ühikute) oleku kontroll, käivitamine, peatamine, taaskäivitamine ja nimekirjade kuvamine.

Eriti “systemctl nimekiri” vaatenurgast vaadatuna saab tuvastada mitte ainult aktiivseid, vaid ka keelatud teenuseid ja neid, mis on seadistatud automaatselt käivituma – nii on võimalik saada täielik ülevaade süsteemi teenustest erinevatest vaatenurkadest.

Selles peatükis selgitame esmalt lihtsalt, mis on “systemctl” ning milliseid teadmisi selles artiklis omandada saab.

Mis on systemctl?

systemctl on standardne tööriist systemd-põhistes Linuxi distributsioonides, mis võimaldab hallata ja kontrollida erinevaid “ühikuid” nagu teenused, sihtmärgid ja mount-punktid.

Seda kasutatakse näiteks Apache (httpd) või SSH teenuste käivitamiseks, peatamiseks või nende oleku kuvamiseks nimekirjana.

Seos systemd ja systemctl vahel

systemd on Linuxi käivitamise ja teenusehalduse keskne mehhanism, mis asendas vanad lahendused nagu “SysVinit” või “Upstart”. systemd-ga suhtlemiseks kasutatakse käsureatööriista systemctl.

Kujutagem ette, et systemd on “juht” ning systemctl on selle “operaator”, kes annab käske edasi.

Mida sellest artiklist õpid

Selles artiklis saad vastused järgmistele küsimustele:

  • Kuidas kuvada praegu töötavate teenuste nimekirja?
  • Kuidas näha nimekirjas ka mitteaktiivseid teenuseid?
  • Kuidas kontrollida, kas teenus käivitub automaatselt?
  • Kuidas lugeda teenuste nimekirja väljundit?

Selgitame käskude kasutamist ja väljundi tõlgendamist ka algajale arusaadavalt. Loodame, et loed lõpuni!

2. Kuidas kuvada teenuste nimekirja systemctl abil

Linuxi süsteemi haldamisel on oluline kiiresti saada ülevaade kõigist teenustest. systemctl võimaldab lihtsalt näha nii aktiivseid kui ka mitteaktiivseid teenuseid ning kontrollida automaatkäivituse seadistusi.

Siin selgitame kolme peamist vaatenurka:

  • Aktiivsete teenuste nimekiri
  • Kõigi teenuste nimekiri (ka mitteaktiivsed)
  • Teenuseühikute failide nimekiri (ka käivitusseaded)

2.1 Kuidas kuvada aktiivsete teenuste nimekirja

Kõige põhilisemalt saab töötavate teenuste nimekirja kuvada järgmise käsuga:

systemctl list-units --type=service

See käsk näitab kõiki aktiivseid (töötavaid) teenuseid. Väljund sisaldab järgmisi veerge:

Veeru nimiSelgitus
UNITTeenuse nimi (nt ssh.service)
LOADKas ühikufail on laaditud
ACTIVEKas teenus on aktiivne (nt active, inactive, failed)
SUBTäpsem olek (nt running, exited, dead)
DESCRIPTIONTeenuse kirjeldus

Selle info abil saab kiiresti teada, kas näiteks nginx töötab või millised teenused on aktiivsed.

2.2 Kuidas kuvada ka mitteaktiivseid teenuseid

Vaikimisi näitab list-units ainult aktiivseid teenuseid. Et näha ka mitteaktiivseid, lisa --all valik.

systemctl list-units --type=service --all

Selle valikuga saad nimekirja, mis hõlmab ka “inactive” teenuseid ja neid, mida pole kunagi käivitatud.

Veel täpsemaks filtreerimiseks kasuta --state= valikut.

systemctl list-units --type=service --state=inactive

Nii saad vaadata näiteks ainult peatud teenuseid.

2.3 Kuidas kuvada teenuseühikute faile

Kui soovid teada, millised teenused on lubatud (enabled) või keelatud (disabled), kasuta järgmist käsku:

systemctl list-unit-files --type=service

See käsk kuvab kõik teenuste ühikufailid ja igaühe oleku (enabled/disabled jne).

STATE väärtusSelgitus
enabledKäivitatakse automaatselt alglaadimisel
disabledEi käivitata automaatselt, tuleb käsitsi alustada
staticSõltub teistest ühikutest, ei saa ise olla lubatud/keelatud
maskedOn täielikult keelatud ning ei saa käivitada (kaitstud)

Nii näed, millised teenused käivituvad koos süsteemiga ja millised on kogemata “maskitud”.

3. Põhilised teenuste haldustoimingud systemctl abil

systemctl käsku kasutatakse mitte ainult teenuste oleku kontrollimiseks, vaid ka nende käivitamiseks, peatamiseks, taaskäivitamiseks ja automaatkäivituse seadistamiseks. Selles osas selgitame levinumaid haldustoiminguid, mida Linuxi süsteemi igapäevases halduses vaja läheb.

Regulaarne serverihaldus ja tõrkeotsing muutuvad palju lihtsamaks, kui neid käske suudad kasutada.

3.1 Kuidas teenust käivitada

Konkreetselt teenust saab käsitsi käivitada kasutades start alamkäsku.

sudo systemctl start teenuse_nimi

Näide: Apache (httpd) käivitamine:

sudo systemctl start httpd.service

See käsk käivitab teenuse kohe, kuid automaatse käivituse seadistamiseks pärast taaskäivitust tuleb hiljem kasutada enable käsku.

3.2 Kuidas teenust peatada

Teenuse peatamiseks kasuta järgmist käsku:

sudo systemctl stop teenuse_nimi

Näide:

sudo systemctl stop sshd.service

Peatatud teenus ei taastu enne, kui see käsitsi uuesti käivitatakse.

3.3 Kuidas teenust taaskäivitada

Pärast seadistuse muutmist või muul vajadusel saab teenust taaskäivitada nii:

sudo systemctl restart teenuse_nimi

Näide:

sudo systemctl restart nginx.service

See lõpetab teenuse ja käivitab selle uuesti, sõltumata varasemast olekust.

3.4 Kuidas teenuse olekut kontrollida

Teenuse detailse oleku kontrollimiseks kasuta status alamkäsku.

systemctl status teenuse_nimi

Näide:

systemctl status mysql.service

See näitab aktiivsust, protsessi ID-d (PID), kokkuvõtlikke logisid ja muud kasulikku info, eriti tõrkeotsinguks.

3.5 Kuidas seadistada teenuse automaatset käivitust

Kui soovid, et teenus käivituks automaatselt iga süsteemi käivitamisel, kasuta enable alamkäsku.

sudo systemctl enable teenuse_nimi

Näide:

sudo systemctl enable docker.service

See muudab teenuse automaatselt käivituvaks süsteemi stardil.

3.6 Kuidas keelata teenuse automaatne käivitus

Automaatse käivituse eemaldamiseks kasuta disable käsku.

sudo systemctl disable teenuse_nimi

Näide:

sudo systemctl disable cups.service

Pärast seda teenus enam süsteemi käivitamisel ei alga.

3.7 Kuidas kontrollida automaatkäivituse olekut

Et teada saada, kas teenus on lubatud (enabled) või keelatud (disabled), kasuta is-enabled käsku.

systemctl is-enabled teenuse_nimi

Näide:

enabled

Väljund näitab kiirelt teenuse automaatkäivituse olekut.

4. Kasulikud valikud ja edasijõudnud tehnikad systemctl kasutamisel

systemctl käsk võimaldab lisaks põhilistele toimingutele ka täiustatud haldusülesandeid. Siin tutvustame mõnda kasulikku funktsiooni ja trikki, mis muudavad teenuste halduse Linuxis veelgi tõhusamaks.

Selliste tehnikate kasutamine parandab süsteemi halduse kiirust ja paindlikkust.

4.1 Teenuse sõltuvuste kuvamine

Linuxis võivad teenused sõltuda teistest ühikutest (teenused, mount-punktid, sihtmärgid jne). Sõltuvuste kontrollimiseks kasuta järgmist käsku:

systemctl list-dependencies teenuse_nimi

Näide:

systemctl list-dependencies nginx.service

See näitab määratud teenuse sõltuvusi puustruktuurina, mis on abiks käivituse järjekorra ja teenuste vaheliste seoste analüüsil.

4.2 Ühikufaili sisu kuvamine

Teenuse seadistuse üksikasjade vaatamiseks saab ühikufaili sisu otse kuvada:

systemctl cat teenuse_nimi

Näide:

systemctl cat ssh.service

See näitab reaalselt kasutusel olevat ühikufaili teed ja selle sisu, võimaldades kiiresti kontrollida, kas failis on tehtud muudatusi.

4.3 Ühikufailide uuestilaadimine

Pärast ühikufailide käsitsi muutmist tuleb muudatused systemctl kaudu laadida. Kasuta selleks daemon-reload käsku.

sudo systemctl daemon-reexec

Või enamasti kasutatakse:

sudo systemctl daemon-reload

See käsk laadib ühikufailid uuesti, nii et muudatused jõustuvad. Kui seadistus ei hakka kohe tööle, proovi kindlasti seda käsku.

4.4 Teenuse logide vaatamine (lisavõimalus)

Kuigi systemctl ise logisid ei kuva, saab teenuse logisid vaadata journalctl käsuga.

journalctl -u teenuse_nimi

Näide:

journalctl -u docker.service

Siit leiab näiteks teenuse käivituse vead ja taaskäivituse logid, mis teeb sellest esmase tõrkeotsingu tööriista.

5. Levinumad probleemid ja nende lahendused

systemctl kasutamisel võib vahel juhtuda, et teenus ei tööta oodatult või kuvatakse veateateid. Selles peatükis selgitame levinumaid probleeme ja kuidas neid lahendada.

Kui näiteks “teenus ei käivitu” või “oleku kontrollimisel ei leia põhjust”, aitab alljärgnev loetelu tegutseda rahulikult ja tõhusalt.

5.1 Mida teha, kui teenus ei käivitu

Teenuse käivitamisel võib ette tulla järgmine viga:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.

Sellisel juhul kontrolli probleemi allika leidmiseks järgmisi asju:

  1. Olekukontroll
   systemctl status teenuse_nimi
  1. Vigade logi kontroll
   journalctl -xe
  1. Ühikufailide uuestilaadimine
    Kui muudsid ühikufaili, käivita järgmine käsk:
   sudo systemctl daemon-reload
  1. Pordikonfliktide kontroll
    Kas mõni muu protsess kasutab sama porti? Kontrolli nii:
   sudo netstat -tulnp | grep pordinumber

5.2 Kuidas lugeda status käsu veateateid

systemctl status käsku kasutades näed teenuse oleku kõrval ka viimaseid logisõnumeid. Näiteks:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code) since Fri 2025-04-18 12:00:00 JST; 5s ago
  Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)

Näiteks “Active: failed” või “status=1/FAILURE” näitab, et teenuse käivitamine ebaõnnestus ja milline protsess vea põhjustas.

“Loaded” reast saad kiiresti teada ühikufaili tee, mida vajadusel saab kohe avada ja muuta.

5.3 Kui teenus peatub iseenesest

Kui teenus käivitub, kuid peatub peagi, võib põhjus olla näiteks:

  • Vigane seadistusfail
  • Pordikonflikt
  • Puutuvad failid või kaustad puuduvad
  • Ebapiisavad õigused

Sellisel juhul tee järgmist:

  • Kontrolli seadistust ning kasuta valideerimisvahendeid, nt nginx -t või apachectl configtest
  • Vaata detailseid logisid käsuga journalctl -u teenuse_nimi
  • Kontrolli vajalike kaustade olemasolu (nt /var/run/xxx) ja loo need vajadusel käsitsi

5.4 Kui teenust ei saa käivitada masked oleku tõttu

Kui systemctl start käivitamisel saad järgmise vea:

Failed to start example.service: Unit example.service is masked.

See tähendab, et teenus on täielikult keelatud (masked) ning käivitamine on blokeeritud. Keelu eemaldamiseks kasuta:

sudo systemctl unmask teenuse_nimi

Seejärel saab teenuse taas käivitada start käsuga.

6. Kokkuvõte

Teenuste haldus Linuxis on igapäevase süsteemihalduse lahutamatu osa. Selle keskne tööriist on systemctl, mis võimaldab nimekirjade kuvamist ja teenuste operatiivset haldamist – see kõik annab hea ülevaate süsteemi seisust ja võimaldab seda juhtida.

Käesolevas artiklis selgitasime märksõna “systemctl nimekiri” põhjal järgmisi teemasid:

Mida saab systemctl käsuga teha? (kokkuvõte)

  • Teenuste nimekirjade kuvamine
  • Aktiivsete teenuste kuvamine (list-units --type=service)
  • Mitteaktiivsete teenuste kuvamine (--all ja --state= valikud)
  • Teenuseühikute failide nimekiri ja käivitusseaded (list-unit-files)
  • Põhitoimingud teenustega
  • Käivitamine, peatamine, taaskäivitamine, oleku kontroll (start / stop / restart / status)
  • Automaatse käivituse seadistamine (enable / disable / is-enabled)
  • Erioperatsioonid ja tõrkeotsing
  • Sõltuvuste vaatamine, ühikufaili kuvamine, seadistuste uuestilaadimine
  • Vigade logide uurimine ja staatuse kontroll põhjuse leidmiseks

Teenuste halduse parimad praktikad

  • Kontrolli olekut enne muudatusi (kasuta alati status)
  • Veendu automaatse käivituse olekus (is-enabled)
  • Pärast seadistusmuudatusi lae kindlasti daemon-reload
  • Probleemide korral vaata logisid käsuga journalctl

Selliste põhjalike kontrollide tegemine aitab pakkuda stabiilseid teenuseid ja võimaldab kiiremat tõrkeotsingut.

Veel õppimisvõimalusi

Kui soovid edasi õppida, soovitame järgmisi teemasid:

  • systemd sihtmärgid (target) ja nende erinevus runlevel-ist
  • Ajastatud ülesanded systemd timeritega (systemd-timer)
  • Kohandatud ühikufailide loomine ja paigutus

7. Korduma kippuvad küsimused (KKK)

Siin on vastused sagedamini esitatavatele küsimustele systemctl käsu ja teenuste nimekirjade kohta. Kui oled põhitoimingutega juba harjunud, aitab see jaotis veelgi teadmisi kinnistada.

K1. Mis vahe on systemctl ja service käskudel?

V1.
systemctl on systemd-põhine teenusehalduse tööriist, mida kasutatakse enamikus kaasaegsetes Linuxi distributsioonides (nt Ubuntu, CentOS, Fedora).
Teisalt on service seotud vanema SysVinit süsteemiga. Kuigi seda käsku leiab veel ühilduvuse huvides, on systemd-ga süsteemides soovitatav kasutada just systemctl-i.

K2. Mis vahe on list-units ja list-unit-files käskudel?

V2.

  • list-units kuvab laaditud ühikuid (st käimasolevad või hiljuti kasutatud ühikud).
  • list-unit-files näitab kõiki ühikufailide seadeid ja olekuid (enabled / disabled jne).
    Lihtsalt öeldes – esimene näitab “praegu töötavaid”, teine “kõiki seadistatud” ühikuid.

K3. Kas static olekus teenust saab käivitada?

V3.
Jah, ka static teenust saab käsitsi start käsuga käivitada. Kuid enable käsku kasutada ei saa, sest static ühikud sõltuvad teiste teenuste käivitamisest.

K4. Mida teha, kui teenus on masked-olekus ja ei käivitu?

V4.
masked tähendab, et teenus on täielikult keelatud ja käivitamine pole lubatud. Eemalda mask järgmiselt:

sudo systemctl unmask teenuse_nimi

Seejärel saad teenuse taas käivitada käsuga start.

K5. Kuidas kuvada teenuste olekut graafilises liideses (GUI)?

V5.
Mõnes distributsioonis saab teenuste olekut vaadata graafiliselt gnome-system-monitor, KSysGuard või Cockpit tööriistadega.
Kõige täpsemaks juhtimiseks ja halduseks on siiski soovitatav kasutada systemctl-i.

K6. Kuhu peaksin enda loodud ühikufaili paigutama?

V6.
Tavaliselt paigutatakse ühikufail /etc/systemd/system/ kataloogi. Pärast muutmist ära unusta käivitada:

sudo systemctl daemon-reload

Seejärel saab teenust hallata nagu tavaliselt start või enable käskudega.