I-restart ang isang Serbisyo gamit ang systemctl restart Command

I Restart Ang Isang Serbisyo Gamit Ang Systemctl Restart Command



Ang sistemad ay isang system service manager na malawakang ginagamit sa Linux. Pangasiwaan sistemad mga serbisyo, ang systemctl ginagamit ang command line utility. Ginagamit din ang tool na ito upang i-restart ang anumang systemd service.

Ang mga serbisyo sa Linux ay pinamamahalaan sa pamamagitan ng kanilang configuration file. Kung ang mga pagbabago ay ginawa sa configuration file ng isang serbisyo, ito ay kinakailangan upang simulan ang isang restart ng serbisyo upang ilapat ang mga pagbabago. Sa pag-restart ng serbisyo, muling susuriin ng systemd ang configuration file at inilalapat ang mga pagbabago.

Sa gabay na ito, susuriin ko kung paano gamitin ang systemctl upang i-restart ang isang serbisyo sa Linux.







Tandaan: Kasama sa gabay na ito ang mga utos at tagubilin na isinasagawa sa Ubuntu 22.04. Ang command ay gagana nang walang anumang mga isyu sa mga distribusyon na kasama ng systemd service manager.



Ang systemctl i-restart ang Command

Ang i-restart mahalagang itinigil ng command ang isang serbisyo at simulan itong muli. Kung hindi gumagana ang serbisyo o unit, sisimulan ng restart command ang operasyon nito.



Hindi inaalis ng restart command ang mga prosesong naka-link sa serbisyo. Kunin ang halimbawa ng mga descriptor ng file, na mga hindi negatibong identifier na itinalaga ng operating system sa mga file na binuksan ng isang serbisyo. Kung mag-restart ka ng isang serbisyo, ang file descriptor na naka-link sa serbisyong iyon ay mananatili doon sa panahon ng proseso ng pag-restart.





Kung gusto mong i-flush out ang lahat ng naka-link na proseso sa serbisyo, kailangan mong tahasan huminto ang serbisyo at simulan ito muli.

Paano Mag-restart ng Serbisyo

Sa Linux, maaari mong i-restart ang isang serbisyo sa pamamagitan ng paggamit ng sudo systemctl command line tool na may i-restart opsyon at pagtukoy ng pangalan nito. Ang pangkalahatang syntax ay ibinigay sa ibaba:



sudo systemctl restart [ pangalan ng serbisyo ]

Kakailanganin mong sudo mga pribilehiyong i-restart ang isang serbisyo.

Halimbawa, i-restart natin ang ssh serbisyo.

sudo systemctl i-restart ang ssh.service

Upang i-restart ang maramihang mga serbisyo, idagdag ang bawat pangalan ng serbisyo pagkatapos ng i-restart utos na may espasyo.

sudo systemctl i-restart ang ssh.service smbd.service

Ang iba pang mga utos sa pag-restart ay ibinibigay sa talahanayan sa ibaba:

subukang i-restart Ito ay huminto o magsisimula sa tinukoy na serbisyo o mga serbisyo at kung ang serbisyo ay hindi tumatakbo hindi ito magsisimula
i-reload-o-restart I-reload ang suportadong serbisyo o mga serbisyo at kung hindi suportado ang serbisyo, i-restart ito at i-activate ito
try-reload-o-try-restart I-reload ang sinusuportahang serbisyo o mga serbisyo at kung hindi suportado ang serbisyo, i-restart ito nang hindi ito ina-activate

Sa mga utos sa itaas, ang .serbisyo opsyonal ang extension.

Paano Awtomatikong I-restart ang isang Serbisyo

Sa Linux, kung nabigo ang isang serbisyo, ang sistemad na-restart ito bilang default. Gayunpaman, sa maraming mga kaso, maaaring kailanganin na baguhin ang paraan kung saan mag-restart ang isang serbisyo. Halimbawa, maaaring kailanganin ng isa ang manu-manong pagkilos sa panahon ng proseso ng pag-debug ng custom-made na serbisyo.

Ang mga systemd unit file o service file ay matatagpuan sa /etc/systemd/system o /lib/systemd/system higit sa lahat ay depende sa kung paano nilikha ang serbisyo. Upang ilista ang mga file ng unit sa Linux, gamitin ang sumusunod na command:

ls / lib / sistemad / sistema

Maaari mong makita ang mga configuration file ng iba't ibang serbisyo. Buksan natin ang ssh.service file gamit ang nano editor.

sudo nano / lib / sistemad / sistema / ssh.service

Dito maaari mong baguhin ang I-restart setting. Bilang default, ito ay nakatakda sa on-failure . Ang iba pang mga opsyon upang i-restart ang isang serbisyo ay nakalista sa ibaba:

  • Hindi
  • palagi
  • sa-tagumpay
  • on-failure
  • on-abnormal
  • on-abort
  • on-watchdog

Ang isa pang opsyon sa file ng serbisyo ng unit ay I-restartSec na ginagamit upang tukuyin ang bilang ng mga segundo matapos na mag-restart ang serbisyo.

[ Serbisyo ]

I-restart = palagi

I-restartSec = 5

Nangangahulugan ang mga tagubiling ito na magre-restart ang serbisyo sa pag-boot at, kung magambala, magre-restart pagkatapos ng 5 segundo.

Pagkatapos baguhin ang setting, isagawa ang sumusunod na command para ilapat ang mga pagbabago.

sudo systemctl reload-daemon

Ang iba pang mahahalagang setting na dapat isaalang-alang ay StartLimitIntervalSec at StartLimitBurst . Ang mga pagpipiliang ito ay kapaki-pakinabang upang itakda ang maximum na oras at maximum na muling pagsubok upang i-restart ang isang serbisyo.

[ Yunit ]

StartLimitIntervalSec = 300

StartLimitBurst = 4

Ang tagubilin sa itaas ay nagpapahiwatig na ang systemd ay awtomatikong hihinto sa pagsubok na i-restart ang isang serbisyo kung hindi ito magsisimula pagkatapos ng 300 segundo at 4 na muling pagsubok.

Upang i-verify kung magre-restart ang serbisyo pagkatapos ng 5 segundo o hindi, patayin ang serbisyo gamit ang PID ng serbisyo at ang pumatay utos.

sudo pumatay -9 [ PID ]

Pagkatapos ng 5 segundo, ang serbisyo ay ire-restart; gamitin ang journalctl utos na suriin ang katayuan ng ssh.service .

journalctl -sa ssh.service

Paano Mag-restart ng Serbisyo kapag Nag-restart ang Dependent Service

Sa Linux, maraming mga serbisyo ang magkakaugnay, at gayundin, ang mga ito ay kinakailangang i-restart kapag ang isang umaasang serbisyo ay na-restart.

Mayroong tatlong magkakaibang mga opsyon sa file ng serbisyo ng unit upang i-restart ang isang serbisyo, na may isang umaasa na serbisyo na na-restart.

  • Bahagi ng
  • BindsTo
  • Nangangailangan

Ang lahat ng mga opsyong ito ay gumaganap ng parehong gawain.

Kumuha tayo ng halimbawa ng ssh.service na nakadepende sa apparmor.service; isang Linux Security Module upang magbigay ng kinakailangang access. Upang ilista ang mga dependency ng isang serbisyo sa paggamit ng Linux systemctl kasama listahan-dependencies command at pangalan ng serbisyo.

systemctl list-dependencies ssh.service

Kaya, kung gusto mong i-restart ang ssh.service kapag na-restart mo ang apparmor.service, kailangan mong isama ang opsyong PartOf, BindsTo, o Requires kasama ang pangalan ng serbisyo sa seksyong [Unit] ng apparmor.service file.

Buksan ang apparmor.service file.

sudo nano / lib / sistemad / sistema / apparmor.service

Idagdag ang sumusunod na linya sa seksyong [Yunit].

Bahagi ng =ssh.service

I-save ang file at isagawa ang command na daemon-reload.

sudo systemctl daemon-reload

Ngayon, i-restart ang ssh.service at pagkatapos ay suriin ang apparmor.service log.

Mapapansin mo ang apparmor.service nag-restart sa parehong oras ang ssh.service na-restart.

Konklusyon

Upang i-restart ang isang serbisyo o mga serbisyo sa Linux, ang systemctl Ang utos ay ginagamit kasama ng i-restart opsyon. Ang systemctl ay isang command line utility na ginagamit upang pamahalaan ang mga serbisyo ng systemd. Ang i-restart ang opsyon ay magsisimula ng isang serbisyo at pagkatapos ay ihihinto ito, na nagpapagana ng isang hindi aktibong serbisyo. Gayunpaman, maaari mong i-restart ang isang serbisyo nang hindi ito ina-activate sa pamamagitan ng paggamit ng subukang i-restart opsyon.