Paslaugų valdymas su systemctl Jūsų VPS
Jūsų VPS veikia programos, kurios turi veikti visada: SSH serveris, žiniatinklio serveris, duomenų bazė. Tokios programos vadinamos paslaugomis. Debian, Ubuntu, AlmaLinux ir Rocky Linux sistemose jas paleidžia ir prižiūri systemd, o systemd valdote komanda systemctl. Štai komandos, kurių Jums prireiks dažniausiai.
Paslaugos būsena
systemctl status nginx
Plėtinio .service galite nerašyti. Išvestį skaitykite iš viršaus į apačią:
- Taškelis prieš pavadinimą yra žalias, kai paslauga veikia, baltas, kai ji sustabdyta, ir raudonas, kai jos veikimas nepavyko.
- Loaded rodo, ar paslauga paleidžiama įjungiant sistemą (
enabled), ar ne (disabled). - Active rodo, ar ji šiuo metu veikia (
active (running)), yra sustabdyta (inactive (dead)) ar nepavyko (failed), ir nuo kada. - Apačioje matote paskutines paslaugos žurnalo eilutes. Dažnai jau ten nurodyta, kodėl kažkas neveikia.
Paleidimas, sustabdymas ir konfigūracijos įkėlimas iš naujo
| Komanda | Ką ji daro |
|---|---|
sudo systemctl start nginx | Paleisti dabar |
sudo systemctl stop nginx | Sustabdyti dabar |
sudo systemctl restart nginx | Sustabdyti ir vėl paleisti |
sudo systemctl reload nginx | Iš naujo nuskaityti konfigūraciją nesustabdant |
Skirtumas tarp restart ir reload yra svarbus. Atliekant restart paslauga trumpam sustoja, o jei naujoje konfigūracijoje yra klaida, ji nebepasileidžia ir Jūsų svetainė nustoja veikti. Atliekant reload paslauga toliau veikia; aptikusi klaidą, nginx išlaiko senąją konfigūraciją. Todėl pirmiausia patikrinkite konfigūraciją (sudo nginx -t, sudo sshd -t) ir tik tada naudokite reload. Ne kiekviena paslauga palaiko reload; sudo systemctl reload-or-restart pasirenka pati.
Paleidimas įjungiant sistemą: enable ir disable
Paleidimas ir „paleidimas įjungiant sistemą“ yra du skirtingi dalykai. Jei paslaugą paleidžiate tik komanda start, po kito perkrovimo, pavyzdžiui, atnaujinus branduolį, ji vėl nebeveiks.
| Komanda | Ką ji daro |
|---|---|
sudo systemctl enable --now nginx | Paleisti dabar ir nuo šiol kaskart įjungiant sistemą. Naudokite tai naujai paslaugai |
sudo systemctl disable --now nginx | Sustabdyti dabar ir nebepaleisti įjungiant sistemą |
systemctl is-enabled nginx | Parodo, ar paslauga paleidžiama įjungiant sistemą |
Kas negerai? Ir kas veikia?
systemctl --failed
Ši komanda parodo visas nepavykusias paslaugas. Sąrašas turėtų būti tuščias. Patikrinkite jį po kiekvieno perkrovimo ir kiekvieno atnaujinimo. Išsprendę problemą, pranešimą pašalinkite komanda sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningparodo visas veikiančias paslaugas. Jei kurios nors nepažįstate, išsiaiškinkite, ką ji daro. Paslauga, kurios Jums nereikia, yra nereikalingas įėjimo taškas.systemctl list-timersparodo suplanuotas systemd užduotis: kada jos paskutinį kartą buvo vykdytos ir kada bus vykdomos vėl. Taip, pavyzdžiui, matote, ar veikia automatinių atnaujinimų ar sertifikatų atnaujinimo laikmačiai.
Paslaugos žurnalai
Jei norite matyti daugiau nei kelias eilutes systemctl status išvestyje, naudokite journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Pirmoji komanda parodo viską, kas susiję su nginx per pastarąją valandą, antroji tik klaidas nuo paskutinio perkrovimo. Daugiau komandų rasite straipsnyje Žurnalų skaitymas su journalctl ir docker logs.
Paslaugos nustatymų keitimas
Paketo unit failo (/usr/lib/systemd/system/ kataloge) niekada nekeiskite, nes atnaujinimas jį perrašys. Naudokite sudo systemctl edit nginx: ši komanda sukuria nedidelį failą tik su Jūsų pakeitimais ir priverčia systemd jį nuskaityti iš naujo. Kokie nustatymai galiausiai galioja, matysite su systemctl cat nginx.
sudo systemctl reboot arba mygtuku Perkrauti VPS puslapyje. Priverstinis išjungimas prilygsta kištuko ištraukimui: paslaugos negauna galimybės tvarkingai sustoti, o duomenų bazė gali būti sugadinta. Žr. VPS puslapis: įjungimas ir išjungimas, grafikai, sistema ir žurnalas.AlmaLinux ir Rocky Linux sistemose systemctl veikia lygiai taip pat, tik kai kurios paslaugos vadinasi kitaip: SSH paslauga ten vadinasi sshd, o ne ssh, Apache vadinasi httpd, o ugniasienė firewalld.
Norite sužinoti daugiau? Išeikite nemokamą kursą „VPS ir Linux serverių administravimas“, pamoką 6.1 Paslaugų valdymas su systemd arba pamoką 6.2 Žurnalų skaitymas su journalctl.
