Palveluita Linuxissa hallitaan niiden määritystiedostojen kautta. Jos palvelun asetustiedostoon tehdään muutoksia, on palvelun käynnistäminen uudelleenkäynnistettävä muutosten soveltamiseksi. Kun palvelu käynnistetään uudelleen, systemd arvioi konfigurointitiedoston uudelleen ja ottaa muutokset käyttöön.
Tässä oppaassa käyn läpi, kuinka systemctl:ää käytetään palvelun käynnistämiseen uudelleen Linuxissa.
Huomautus: Tämä opas sisältää komennot ja ohjeet, jotka suoritetaan Ubuntu 22.04:ssä. Komento toimii ilman ongelmia systemd-palvelunhallinnan mukana tulevissa jakeluissa.
Systemctl käynnistää komennon uudelleen
The uudelleenkäynnistää komento käytännössä pysäyttää palvelun ja käynnistää sen uudelleen. Jos palvelu tai yksikkö ei ole toiminnassa, uudelleenkäynnistyskomento käynnistää sen toiminnan.
Restart-komento ei poista palveluun linkitettyjä prosesseja. Otetaan esimerkiksi tiedostokuvaajat, jotka ovat ei-negatiivisia tunnisteita, jotka käyttöjärjestelmä määrittää palvelun avaamille tiedostoille. Jos käynnistät palvelun uudelleen, palveluun linkitetty tiedostokuvaaja pysyy siellä uudelleenkäynnistyksen aikana.
Jos haluat huuhdella kaikki palveluun linkitetyt prosessit, sinun on tehtävä se erikseen lopettaa palvelu ja alkaa se taas.
Palvelun uudelleenkäynnistäminen
Linuxissa voit käynnistää palvelun uudelleen käyttämällä sudo systemctl komentorivityökalun kanssa uudelleenkäynnistää vaihtoehto ja määritä sen nimi. Yleinen syntaksi on annettu alla:
sudo systemctl uudelleenkäynnistys [ palvelun nimi ]
Tarvitset sudo oikeudet käynnistää palvelu uudelleen.
Esimerkiksi, käynnistetään uudelleen ssh palvelua.
sudo systemctl käynnistä ssh.service uudelleenJos haluat käynnistää useita palveluita uudelleen, lisää kunkin palvelun nimi -merkin perään uudelleenkäynnistää komento välilyönnillä.
sudo systemctl käynnistä ssh.service smbd.service uudelleenMuut uudelleenkäynnistyskomennot on annettu alla olevassa taulukossa:
kokeile-käynnistä uudelleen | Se pysäyttää tai käynnistää määritetyn palvelun tai palvelut ja jos palvelu ei ole käynnissä, se ei käynnistä sitä |
lataa tai käynnistä uudelleen | Lataa tuettu palvelu tai palvelut uudelleen ja jos palvelua ei tueta, käynnistä se uudelleen ja aktivoi se |
kokeile-lataa-tai-yritä-käynnistää uudelleen | Lataa tuettu palvelu tai palvelut uudelleen ja jos palvelua ei tueta, käynnistä se uudelleen aktivoimatta sitä |
Yllä olevissa komennoissa .palvelu laajennus on valinnainen.
Palvelun automaattinen uudelleenkäynnistys
Jos palvelu epäonnistuu Linuxissa, systemd käynnistänyt sen oletuksena uudelleen. Siitä huolimatta monissa tapauksissa voi olla tarpeen muuttaa tapaa, jolla palvelu käynnistyy uudelleen. Esimerkiksi räätälöidyn palvelun virheenkorjausprosessin aikana voi tarvita manuaalisia toimia.
Systemd-yksikön tiedostot tai huoltotiedostot sijaitsevat /etc/systemd/system tai /lib/systemd/system lähinnä sen mukaan, miten palvelu on luotu. Listaaksesi yksikkötiedostot Linuxissa käytä seuraavaa komentoa:
ls / lib / systemd / järjestelmäNäet eri palveluiden asetustiedostot. Avataan ssh.service tiedosto käyttäen nano toimittaja.
sudo nano / lib / systemd / järjestelmä / ssh.serviceTäällä voit muokata Uudelleenkäynnistää asetusta. Oletuksena se on asetettu vikatilanteessa . Muut vaihtoehdot palvelun käynnistämiseksi uudelleen on lueteltu alla:
- Ei
- aina
- onnistuneena
- vikatilanteessa
- epänormaalia
- kesken abortin
- vahtikoirassa
Toinen vaihtoehto yksikköpalvelutiedostossa on RestartSec jota käytetään määrittämään sekuntien lukumäärä, jonka jälkeen palvelu käynnistyy uudelleen.
[ Palvelu ]Uudelleenkäynnistää = aina
RestartSec = 5
Nämä ohjeet tarkoittavat, että palvelu käynnistyy uudelleen käynnistyksen yhteydessä, ja jos se keskeytyy, se käynnistetään uudelleen 5 sekunnin kuluttua.
Kun olet muokannut asetusta, ota muutokset käyttöön suorittamalla seuraava komento.
sudo systemctl reload-daemonMuita tärkeitä huomioitavia asetuksia ovat StartLimitIntervalSec ja StartLimitBurst . Nämä vaihtoehdot ovat hyödyllisiä määritettäessä enimmäisaika ja uudelleenkäynnistysyritysten enimmäismäärä.
[ Yksikkö ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Yllä oleva ohje osoittaa, että systemd lopettaa automaattisesti palvelun käynnistämisen uudelleen, jos se ei käynnisty 300 sekunnin ja 4 uudelleenyrityksen jälkeen.
Varmista, että palvelu käynnistyy uudelleen 5 sekunnin kuluttua vai ei, lopeta palvelu käyttämällä palvelun PID-tunnusta ja tappaa komento.
sudo tappaa -9 [ PID ]5 sekunnin kuluttua palvelu käynnistetään uudelleen; Käytä Journalctl -komento tarkistaaksesi tilan ssh.service .
Journalctl -sisään ssh.service
Palvelun käynnistäminen uudelleen, kun riippuvainen palvelu käynnistyy uudelleen
Linuxissa monet palvelut ovat toisistaan riippuvaisia, ja vastaavasti ne on käynnistettävä uudelleen, kun riippuvainen palvelu käynnistetään uudelleen.
Yksikköpalvelutiedostossa on kolme eri vaihtoehtoa palvelun käynnistämiseksi uudelleen, kun riippuvainen palvelu käynnistetään uudelleen.
- Osa
- BindsTo
- Vaatii
Kaikki nämä vaihtoehdot suorittavat saman tehtävän.
Otetaan esimerkki ssh.servicesta, joka riippuu apparmor.servicesta; Linux-suojausmoduuli, joka tarjoaa tarvittavan pääsyn. Luettelo palvelun riippuvuuksista Linux-käytössä systemctl kanssa listariippuvuudet komennon ja palvelun nimen.
systemctl list-dependencies ssh.service
Joten jos haluat käynnistää ssh.service-palvelun uudelleen, kun käynnistät apparmor.service-tiedoston uudelleen, sinun on sisällytettävä PartOf-, BindsTo- tai Requires-vaihtoehto palvelun nimen lisäksi apparmor.service-tiedoston [Unit]-osioon.
Avaa apparmor.service-tiedosto.
sudo nano / lib / systemd / järjestelmä / apparmor.serviceLisää seuraava rivi [Yksikkö]-osioon.
Osa =ssh.palvelu
Tallenna tiedosto ja suorita komento daemon-reload.
sudo systemctl daemon-reloadKäynnistä nyt uudelleen ssh.service ja tarkista sitten apparmor.service Hirsi.
Tulet huomaamaan apparmor.service käynnistettiin uudelleen samaan aikaan ssh.service käynnistetty uudelleen.
Johtopäätös
Jos haluat käynnistää palvelun tai palvelut uudelleen Linuxissa, systemctl komentoa käytetään kanssa uudelleenkäynnistää vaihtoehto. The systemctl on komentorivityökalu, jota käytetään systemd-palvelujen hallintaan. The uudelleenkäynnistää -vaihtoehto käynnistää palvelun ja sitten pysäyttää sen aktivoiden ei-aktiivisen palvelun. Voit kuitenkin käynnistää palvelun uudelleen aktivoimatta sitä käyttämällä kokeile-käynnistä uudelleen vaihtoehto.