Storitve v sistemu Linux se upravljajo prek njihove konfiguracijske datoteke. Če se spremeni konfiguracijska datoteka storitve, je treba znova zagnati storitev, da se spremembe uveljavijo. Po ponovnem zagonu storitve systemd ponovno oceni konfiguracijsko datoteko in uveljavi spremembe.
V tem priročniku bom obravnaval, kako uporabiti systemctl za ponovni zagon storitve v Linuxu.
Opomba: Ta priročnik vključuje ukaze in navodila, ki se izvajajo v Ubuntu 22.04. Ukaz bo deloval brez težav na distribucijah, ki so priložene upravitelju storitev systemd.
Ukaz za ponovni zagon systemctl
The ponovni zagon ukaz v bistvu ustavi storitev in jo znova zažene. Če storitev ali enota ne deluje, bo ukaz za ponovni zagon sprožil njeno delovanje.
Ukaz za ponovni zagon ne odstrani procesov, ki so povezani s storitvijo. Vzemimo primer deskriptorjev datotek, ki so nenegativni identifikatorji, ki jih operacijski sistem dodeli datotekam, ki jih odpre storitev. Če znova zaženete storitev, bo deskriptor datoteke, povezan s to storitvijo, ostal tam med postopkom ponovnega zagona.
Če želite izprazniti vse procese, povezane s storitvijo, morate to izrecno storiti stop storitev in začetek to spet.
Kako znova zagnati storitev
V sistemu Linux lahko znova zaženete storitev z uporabo sudo systemctl orodje ukazne vrstice z ponovni zagon možnost in določite njeno ime. Splošna sintaksa je podana spodaj:
sudo ponovni zagon systemctl [ ime storitve ]
Boste potrebovali sudo privilegije za ponovni zagon storitve.
Na primer, znova zaženimo ssh storitev.
sudo systemctl znova zaženite ssh.serviceČe želite znova zagnati več storitev, dodajte vsako ime storitve za ponovni zagon ukaz s presledkom.
sudo systemctl znova zaženite ssh.service smbd.serviceDrugi ukazi za ponovni zagon so podani v spodnji tabeli:
poskusi-ponovno zaženi | Ustavi ali zažene določeno storitev ali storitve in če se storitev ne izvaja, je ne zažene |
znova naloži ali znova zaženi | Ponovno naložite podprto storitev ali storitve in če storitev ni podprta, jo znova zaženite in aktivirajte |
poskusi-ponovno naloži-ali-poskusi-ponovno zaženi | Ponovno naložite podprto storitev ali storitve in če storitev ni podprta, jo znova zaženite, ne da bi jo aktivirali |
V zgornjih ukazih je .storitev razširitev ni obvezna.
Kako samodejno znova zagnati storitev
V Linuxu, če storitev ne uspe, potem je systemd privzeto znova zagnal. Kljub temu bo v mnogih primerih morda treba spremeniti način ponovnega zagona storitve. Med postopkom odpravljanja napak storitve po meri lahko na primer potrebujete ročno ukrepanje.
Datoteke sistemske enote ali storitvene datoteke se nahajajo na /etc/systemd/system oz /lib/systemd/system predvsem odvisno od tega, kako je storitev ustvarjena. Za seznam datotek enote v Linuxu uporabite naslednji ukaz:
ls / lib / systemd / sistemOgledate si lahko konfiguracijske datoteke različnih storitev. Odprimo ssh.service datoteko z uporabo nano urednik.
sudo nano / lib / systemd / sistem / ssh.serviceTukaj lahko spremenite Ponovni zagon nastavitev. Privzeto je nastavljeno na ob neuspehu . Druge možnosti za ponovni zagon storitve so navedene spodaj:
- št
- nenehno
- na-uspeh
- ob neuspehu
- na-nenormalno
- ob prekinitvi
- on-watchdog
Druga možnost v servisni datoteki enote je RestartSec ki se uporablja za določitev števila sekund, po katerih se bo storitev znova zagnala.
[ Storitev ]Ponovni zagon =vedno
RestartSec = 5
Ta navodila pomenijo, da se bo storitev znova zagnala ob zagonu in, če bo prekinjena, se bo znova zagnala po 5 sekundah.
Ko spremenite nastavitev, izvedite naslednji ukaz, da uveljavite spremembe.
sudo sistemski demon za ponovno nalaganjeDruge pomembne nastavitve, ki jih je treba upoštevati, so StartLimitIntervalSec in StartLimitBurst . Te možnosti so uporabne za nastavitev največjega časa in največjega števila ponovnih poskusov za ponovni zagon storitve.
[ Enota ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Zgornje navodilo kaže, da bo systemd samodejno prenehal poskušati znova zagnati storitev, če se ta ne zažene po 300 sekundah in 4 ponovnih poskusih.
Če želite preveriti, ali se storitev znova zažene po 5 sekundah ali ne, zaustavite storitev z uporabo PID storitve in ubiti ukaz.
sudo ubiti -9 [ PID ]Po 5 sekundah se bo storitev znova zagnala; uporabi journalctl ukaz za preverjanje statusa ssh.service .
journalctl -in ssh.service
Kako znova zagnati storitev, ko se odvisna storitev znova zažene
V Linuxu je veliko storitev medsebojno odvisnih in podobno jih je treba znova zagnati, ko se znova zažene odvisna storitev.
V servisni datoteki enote so na voljo tri različne možnosti za ponovni zagon storitve, s ponovnim zagonom odvisne storitve.
- PartOf
- BindsTo
- Zahteva
Vse te možnosti opravljajo isto nalogo.
Vzemimo primer ssh.service, ki je odvisen od apparmor.service; varnostni modul Linux za zagotavljanje potrebnega dostopa. Za seznam odvisnosti storitve v Linuxu uporabite systemctl z seznam odvisnosti ukaz in ime storitve.
sistemski seznam odvisnosti ssh.service
Torej, če želite znova zagnati ssh.service, ko znova zaženete apparmor.service, potem morate vključiti možnost PartOf, BindsTo ali Requires skupaj z imenom storitve v razdelku [Enota] datoteke apparmor.service.
Odprite datoteko apparmor.service.
sudo nano / lib / systemd / sistem / apparmor.storitevDodajte naslednjo vrstico v razdelek [Enota].
PartOf =ssh.service
Shranite datoteko in izvedite ukaz daemon-reload.
sudo systemctl daemon-reloadZdaj znova zaženite ssh.service in nato preverite apparmor.storitev dnevnik.
Opazili boste, apparmor.storitev znova zagnali ob istem času ssh.service znova zagnati.
Zaključek
Če želite znova zagnati storitev ali storitve v sistemu Linux, systemctl ukaz se uporablja z ponovni zagon možnost. The systemctl je pripomoček ukazne vrstice, ki se uporablja za upravljanje storitev systemd. The ponovni zagon možnost zažene storitev in jo nato ustavi ter aktivira neaktivno storitev. Vendar pa lahko znova zaženete storitev, ne da bi jo aktivirali, z uporabo poskusi-ponovno zaženi možnost.