Gestionarea serviciilor cu systemctl pe VPS-ul dumneavoastră
Pe VPS-ul dumneavoastră rulează programe care trebuie să fie mereu disponibile: serverul SSH, un server web, o bază de date. Astfel de programe se numesc servicii. Pe Debian, Ubuntu, AlmaLinux și Rocky Linux, systemd le pornește și le supraveghează, iar systemd se controlează cu comanda systemctl. Acestea sunt comenzile de care veți avea nevoie cel mai des.
Starea unui serviciu
systemctl status nginx
Extensia .service poate fi omisă. Citiți rezultatul de sus în jos:
- Bulina din fața numelui este verde dacă serviciul rulează, albă dacă este oprit și roșie dacă a eșuat.
- Loaded indică dacă serviciul pornește la inițializarea sistemului (
enabled) sau nu (disabled). - Active indică dacă rulează acum (
active (running)), este oprit (inactive (dead)) sau a eșuat (failed), precum și de când. - În partea de jos se află ultimele rânduri din jurnalul serviciului. Adesea, acolo găsiți deja motivul pentru care ceva nu funcționează.
Pornire, oprire și reîncărcare
| Comandă | Ce face |
|---|---|
sudo systemctl start nginx | Pornește acum |
sudo systemctl stop nginx | Oprește acum |
sudo systemctl restart nginx | Oprește și pornește din nou |
sudo systemctl reload nginx | Recitește configurația fără a opri serviciul |
Diferența dintre restart și reload este importantă. La un restart, serviciul se oprește pentru scurt timp, iar dacă noua configurație conține o eroare, acesta nu mai pornește și site-ul dumneavoastră devine indisponibil. La un reload, serviciul continuă să ruleze; în caz de eroare, nginx păstrează configurația veche. Prin urmare, testați mai întâi configurația (sudo nginx -t, sudo sshd -t) și apoi folosiți reload. Nu toate serviciile acceptă reload; sudo systemctl reload-or-restart alege singur varianta potrivită.
La pornirea sistemului: enable și disable
A porni un serviciu și a-l porni „la inițializarea sistemului” sunt două lucruri diferite. Dacă porniți un serviciu doar cu start, după următoarea repornire, de exemplu în urma unei actualizări de kernel, acesta nu mai rulează.
| Comandă | Ce face |
|---|---|
sudo systemctl enable --now nginx | Pornește acum și de acum înainte la fiecare inițializare a sistemului. Folosiți această comandă pentru un serviciu nou |
sudo systemctl disable --now nginx | Oprește acum și nu mai pornește la inițializarea sistemului |
systemctl is-enabled nginx | Arată dacă serviciul pornește la inițializarea sistemului |
Ce nu funcționează? Și ce rulează?
systemctl --failed
Această comandă afișează toate serviciile eșuate. Lista ar trebui să fie goală. Verificați-o după fiecare repornire și după fiecare upgrade. După ce ați rezolvat problema, eliminați notificarea cu sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningafișează toate serviciile care rulează. Dacă nu recunoașteți unul dintre ele, aflați ce face. Un serviciu de care nu aveți nevoie este o cale de acces inutilă.systemctl list-timersafișează sarcinile programate ale systemd, împreună cu momentul ultimei rulări și al următoarei. Astfel puteți vedea, de exemplu, dacă rulează timerele pentru actualizările automate sau pentru reînnoirea certificatelor.
Jurnalele unui serviciu
Dacă doriți să vedeți mai mult decât cele câteva rânduri din systemctl status, folosiți journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Prima comandă afișează tot ce ține de nginx din ultima oră, a doua doar erorile de la ultima repornire. Mai multe comenzi găsiți în Citirea jurnalelor cu journalctl și docker logs.
Modificarea setărilor unui serviciu
Nu modificați niciodată fișierul unit al unui pachet (din /usr/lib/systemd/system/), deoarece o actualizare îl suprascrie. Folosiți sudo systemctl edit nginx: această comandă creează un fișier mic care conține doar modificările dumneavoastră și determină systemd să-l recitească. Configurația care se aplică în final o puteți vedea cu systemctl cat nginx.
sudo systemctl reboot sau cu Repornire din ecranul VPS. Oprirea forțată echivalează cu scoaterea din priză: serviciile nu au ocazia să se oprească în mod corect, iar o bază de date se poate deteriora. Consultați Ecranul VPS: pornire și oprire, grafice, sistem și jurnal.Pe AlmaLinux și Rocky Linux, systemctl funcționează exact la fel, doar că unele servicii au alt nume: serviciul SSH se numește acolo sshd în loc de ssh, Apache se numește httpd, iar firewall-ul firewalld.
Doriți să aflați mai multe? Urmați cursul gratuit VPS și administrarea serverelor Linux, lecția 6.1 Gestionarea serviciilor cu systemd sau lecția 6.2 Citirea jurnalelor cu journalctl.
