Upravljanje storitev s systemctl na Vašem VPS
Na Vašem VPS tečejo programi, ki morajo biti vedno na voljo: strežnik SSH, spletni strežnik, podatkovna zbirka. Takšnim programom pravimo storitve. Na sistemih Debian, Ubuntu, AlmaLinux in Rocky Linux jih zaganja in nadzira systemd, systemd pa upravljate z ukazom systemctl. To so ukazi, ki jih boste najpogosteje potrebovali.
Stanje storitve
systemctl status nginx
Končnico .service lahko izpustite. Izpis preberite od zgoraj navzdol:
- Pikica pred imenom je zelena, če storitev teče, bela, če je ustavljena, in rdeča, če ni uspela.
- Loaded pove, ali se storitev zažene ob zagonu sistema (
enabled) ali ne (disabled). - Active pove, ali storitev zdaj teče (
active (running)), je ustavljena (inactive (dead)) ali ni uspela (failed), in od kdaj. - Na dnu so zadnje vrstice iz dnevnika storitve. Pogosto je tam že zapisano, zakaj gre kaj narobe.
Zagon, ustavitev in ponovno nalaganje
| Ukaz | Kaj naredi |
|---|---|
sudo systemctl start nginx | Zažene zdaj |
sudo systemctl stop nginx | Ustavi zdaj |
sudo systemctl restart nginx | Ustavi in znova zažene |
sudo systemctl reload nginx | Znova prebere konfiguracijo brez ustavitve |
Razlika med restart in reload je pomembna. Pri ukazu restart se storitev za trenutek ustavi. Če je v novi konfiguraciji napaka, se ne zažene več in Vaša spletna stran ne deluje. Pri ukazu reload storitev teče naprej; nginx ob napaki obdrži staro konfiguracijo. Zato najprej preizkusite konfiguracijo (sudo nginx -t, sudo sshd -t) in nato uporabite reload. Vse storitve ne podpirajo ukaza reload; sudo systemctl reload-or-restart izbere sam.
Ob zagonu sistema: enable in disable
Zagon storitve in „zagon ob zagonu sistema“ sta dve različni stvari. Če storitev zaženete samo z ukazom start, po naslednjem ponovnem zagonu, na primer zaradi posodobitve jedra, ne bo več tekla.
| Ukaz | Kaj naredi |
|---|---|
sudo systemctl enable --now nginx | Zažene zdaj in odslej ob vsakem zagonu sistema. To uporabite za novo storitev |
sudo systemctl disable --now nginx | Ustavi zdaj in je ob zagonu sistema ne zaganja več |
systemctl is-enabled nginx | Pokaže, ali se storitev zažene ob zagonu sistema |
Kaj je narobe? In kaj teče?
systemctl --failed
Ta ukaz prikaže vse storitve, ki niso uspele. Seznam mora biti prazen. Preverite ga po vsakem ponovnem zagonu in vsaki nadgradnji. Ko ste težavo odpravili, obvestilo odstranite z ukazom sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningprikaže vse storitve, ki tečejo. Če katere ne poznate, ugotovite, kaj počne. Storitev, ki je ne potrebujete, je nepotreben vhod v sistem.systemctl list-timersprikaže načrtovana opravila systemd, skupaj s podatkom, kdaj so se nazadnje izvedla in kdaj se bodo znova. Tako na primer vidite, ali delujejo časovniki za samodejne posodobitve ali obnavljanje certifikatov.
Dnevniki storitve
Če želite videti več kot nekaj vrstic v systemctl status, uporabite journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Prvi ukaz prikaže vse zapise nginx v zadnji uri, drugi samo napake od zadnjega ponovnega zagona. Več ukazov najdete v članku Branje dnevnikov z journalctl in docker logs.
Prilagajanje nastavitev storitve
Datoteke enote iz paketa (v /usr/lib/systemd/system/) nikoli ne spreminjajte, ker jo posodobitev prepiše. Uporabite sudo systemctl edit nginx: ta ukaz ustvari majhno datoteko samo z Vašimi spremembami in poskrbi, da jo systemd znova prebere. Katere nastavitve na koncu veljajo, vidite z ukazom systemctl cat nginx.
sudo systemctl reboot ali z možnostjo Ponovni zagon na zaslonu VPS. Prisilni izklop je enak izvleku vtiča: storitve nimajo priložnosti, da se pravilno ustavijo, podatkovna zbirka pa se lahko poškoduje. Glejte Zaslon VPS: vklop in izklop, grafi, sistem in dnevnik.Na sistemih AlmaLinux in Rocky Linux systemctl deluje povsem enako, le nekatere storitve se imenujejo drugače: storitev SSH se tam imenuje sshd namesto ssh, Apache se imenuje httpd, požarni zid pa firewalld.
Želite izvedeti več? Obiščite brezplačni tečaj Upravljanje VPS in strežnikov Linux, lekcijo 6.1 Upravljanje storitev s systemd ali lekcijo 6.2 Branje dnevnikov z journalctl.
