Reporniți un serviciu utilizând comanda systemctl restart

Reporniti Un Serviciu Utilizand Comanda Systemctl Restart



The systemd este un manager de servicii de sistem care este utilizat pe scară largă pe Linux. De a gestiona systemd servicii, cel systemctl este utilizat utilitarul de linie de comandă. Acest instrument este, de asemenea, folosit pentru a reporni orice serviciu systemd.

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.service

Pentru 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.service

Alte 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 / sistem

Puteți vedea fișierele de configurare ale diferitelor servicii. Să deschidem ssh.service fișier folosind nano editor.

sudo nano / lib / systemd / sistem / ssh.service

Aici 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-daemon

Alte 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ă.serviciu

Adă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-reload

Acum, 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.