Serviciile pe Linux sunt gestionate prin fișierul lor de configurare. Dacă se fac modificări la fișierul de configurare al unui serviciu, este necesar să inițiezi o repornire a serviciului pentru a aplica modificările. La repornirea serviciului, systemd reevaluează fișierul de configurare și aplică modificările.
În acest ghid, voi analiza cum să folosesc systemctl pentru a reporni un serviciu în Linux.
Notă: Acest ghid include comenzi și instrucțiuni care sunt executate pe Ubuntu 22.04. Comanda va funcționa fără probleme la distribuțiile care vin cu managerul de servicii systemd.
Comanda de repornire systemctl
The repornire comanda oprește în esență un serviciu și îl pornește din nou. Dacă serviciul sau unitatea nu este operațională, comanda de repornire își va iniția operarea.
Comanda de repornire nu elimină procesele care sunt legate de serviciu. Luați exemplul descriptorilor de fișiere, care sunt identificatori nenegativi alocați de sistemul de operare fișierelor deschise de un serviciu. Dacă reporniți un serviciu, descriptorul de fișier legat de acel serviciu va rămâne acolo în timpul procesului de repornire.
Dacă doriți să eliminați toate procesele legate de serviciu, atunci trebuie să faceți în mod explicit Stop serviciul și start din nou.
Cum să reporniți un serviciu
Pe Linux, puteți reporni un serviciu utilizând sudo systemctl instrument de linie de comandă cu repornire opțiunea și specificând numele acesteia. Sintaxa generală este prezentată mai jos:
sudo reporniți systemctl [ numele serviciului ]
Vei avea nevoie sudo privilegii de a reporni un serviciu.
De exemplu, să repornim ssh serviciu.
sudo systemctl reporniți ssh.servicePentru a reporni mai multe servicii, adăugați fiecare nume de serviciu după repornire comanda cu un spațiu.
sudo systemctl reporniți ssh.service smbd.serviceAlte comenzi de repornire sunt date în tabelul de mai jos:
încercați-reporniți | Oprește sau pornește serviciul sau serviciile specificate și, dacă serviciul nu rulează, nu îl pornește |
reîncărcați-sau-reporniți | Reîncărcați serviciul sau serviciile acceptate și, dacă serviciul nu este acceptat, reporniți-l și activați-l |
încercați-reîncărcați-sau-încercați-reporniți | Reîncărcați serviciul sau serviciile acceptate și, dacă serviciul nu este acceptat, reporniți-l fără a-l activa |
În comenzile de mai sus, .serviciu extensia este optionala.
Cum să reporniți automat un serviciu
Pe Linux, dacă un serviciu eșuează, atunci systemd l-a repornit implicit. Cu toate acestea, în multe cazuri, poate fi necesar să se modifice modul în care repornește un serviciu. De exemplu, este posibil să aveți nevoie de acțiune manuală în timpul procesului de depanare a serviciului personalizat.
Fișierele de unitate systemd sau fișierele de serviciu sunt localizate pe /etc/systemd/system sau /lib/systemd/system în principal în funcție de modul în care este creat serviciul. Pentru a lista fișierele unității pe Linux, utilizați următoarea comandă:
ls / lib / systemd / sistemPuteți vedea fișierele de configurare ale diferitelor servicii. Să deschidem ssh.service fișier folosind nano editor.
sudo nano / lib / systemd / sistem / ssh.serviceAici puteți modifica Repornire setare. În mod implicit, este setat la la eșec . Alte opțiuni pentru a reporni un serviciu sunt enumerate mai jos:
- Nu
- mereu
- pe-succes
- la eșec
- on-anormal
- la avort
- caine de paza
O altă opțiune din fișierul de service al unității este RestartSec care este folosit pentru a specifica numărul de secunde după care serviciul va reporni.
[ Serviciu ]Repornire =intotdeauna
RestartSec = 5
Aceste instrucțiuni înseamnă că serviciul va reporni la pornire și, dacă este întrerupt, va fi repornit după 5 secunde.
După modificarea setării, executați următoarea comandă pentru a aplica modificările.
sudo systemctl reload-daemonAlte setări importante de luat în considerare sunt StartLimitIntervalSec și StartLimitBurst . Aceste opțiuni sunt utile pentru a seta timpul maxim și maximul de reîncercări pentru a reporni un serviciu.
[ Unitate ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Instrucțiunea de mai sus indică faptul că systemd va opri automat încercarea de a reporni un serviciu dacă nu pornește după 300 de secunde și 4 reîncercări.
Pentru a verifica dacă serviciul repornește după 5 secunde sau nu, opriți serviciul folosind PID-ul serviciului și ucide comanda.
sudo ucide -9 [ PID ]După 5 secunde, serviciul va fi repornit; folosește jurnalctl comanda pentru a verifica starea ssh.service .
jurnalctl -în ssh.service
Cum să reporniți un serviciu atunci când serviciul dependent se repornește
Pe Linux, multe servicii sunt interdependente și, în mod similar, trebuie să fie repornite atunci când un serviciu dependent este repornit.
Există trei opțiuni diferite în fișierul de serviciu al unității pentru a reporni un serviciu, cu un serviciu dependent repornit.
- PartOf
- BindsTo
- Necesită
Toate aceste opțiuni îndeplinesc aceeași sarcină.
Să luăm un exemplu de ssh.service care depinde de apparmor.service; un modul de securitate Linux pentru a oferi accesul necesar. Pentru a enumera dependențele unui serviciu în utilizarea Linux systemctl cu listă-dependențe numele de comandă și serviciu.
systemctl list-dependencies ssh.service
Deci, dacă doriți să reporniți ssh.service când reporniți apparmor.service, atunci trebuie să includeți opțiunea PartOf, BindsTo sau Requires împreună cu numele serviciului în secțiunea [Unitate] a fișierului apparmor.service.
Deschideți fișierul apparmor.service.
sudo nano / lib / systemd / sistem / aparatură.serviciuAdăugați următoarea linie în secțiunea [Unitate].
PartOf =ssh.service
Salvați fișierul și executați comanda daemon-reload.
sudo systemctl daemon-reloadAcum, reporniți ssh.service și apoi verificați aparatură.serviciu Buturuga.
Veți observa aparatură.serviciu repornit în același timp ssh.service repornit.
Concluzie
Pentru a reporni un serviciu sau servicii pe Linux, systemctl comanda este folosită cu repornire opțiune. The systemctl este un utilitar de linie de comandă folosit pentru a gestiona serviciile de sistem. The repornire opțiunea pornește un serviciu și apoi îl oprește, activând un serviciu inactiv. Cu toate acestea, puteți reporni un serviciu fără a-l activa utilizând încercați-reporniți opțiune.