Uslugama na Linuxu upravlja se putem njihove konfiguracijske datoteke. Ako se naprave izmjene u konfiguracijskoj datoteci usluge, potrebno je pokrenuti ponovno pokretanje usluge kako bi se izmjene primijenile. Nakon ponovnog pokretanja usluge, systemd ponovno procjenjuje konfiguracijsku datoteku i primjenjuje izmjene.
U ovom vodiču ću proći kroz kako koristiti systemctl za ponovno pokretanje usluge u Linuxu.
Bilješka: Ovaj vodič uključuje naredbe i upute koje se izvršavaju na Ubuntu 22.04. Naredba će raditi bez ikakvih problema na distribucijama koje dolaze s upraviteljem usluga systemd.
Systemctl restart naredba
The ponovno pokrenuti naredba u biti zaustavlja uslugu i ponovno je pokreće. Ako usluga ili jedinica ne radi, naredba za ponovno pokretanje pokrenut će njen rad.
Naredba ponovnog pokretanja ne uklanja procese koji su povezani s uslugom. Uzmimo primjer deskriptora datoteka, koji su nenegativni identifikatori koje operativni sustav dodjeljuje datotekama koje otvara usluga. Ako ponovno pokrenete uslugu, deskriptor datoteke povezan s tom uslugom ostat će tamo tijekom procesa ponovnog pokretanja.
Ako želite isprazniti sve procese povezane s uslugom, to morate izričito učiniti Stop usluga i početak ponovno to.
Kako ponovno pokrenuti uslugu
Na Linuxu možete ponovno pokrenuti uslugu pomoću sudo systemctl alat naredbenog retka s ponovno pokrenuti opcija i navođenje njenog naziva. Opća sintaksa data je u nastavku:
sudo systemctl ponovno pokretanje [ naziv usluge ]
Trebat će vam sudo privilegije za ponovno pokretanje usluge.
Na primjer, ponovno pokrenimo ssh servis.
sudo systemctl ponovno pokrenite ssh.serviceZa ponovno pokretanje više usluga, dodajte naziv svake usluge iza ponovno pokrenuti naredba s razmakom.
sudo systemctl ponovno pokrenite ssh.service smbd.serviceOstale naredbe za ponovno pokretanje dane su u tablici ispod:
pokušaj-ponovno pokretanje | Zaustavlja ili pokreće navedenu uslugu ili usluge, a ako usluga nije pokrenuta, ne pokreće je |
reload-or-restart | Ponovno učitajte podržanu uslugu ili usluge, a ako usluga nije podržana, ponovno je pokrenite i aktivirajte |
probaj-reload-ili-try-restart | Ponovno učitajte podržanu uslugu ili usluge, a ako usluga nije podržana, ponovno je pokrenite bez aktivacije |
U gornjim naredbama, .servis proširenje nije obavezno.
Kako automatski ponovno pokrenuti uslugu
Na Linuxu, ako usluga ne uspije, tada je systemd ponovno pokrenuo prema zadanim postavkama. Ipak, u mnogim slučajevima može biti potrebno promijeniti način na koji se usluga ponovno pokreće. Na primjer, možda će trebati ručna radnja tijekom procesa uklanjanja pogrešaka prilagođene usluge.
Datoteke jedinice systemd ili servisne datoteke nalaze se na /etc/systemd/sustav ili /lib/systemd/sustav uglavnom ovisno o tome kako je usluga kreirana. Za popis datoteka jedinica u Linuxu koristite sljedeću naredbu:
ls / lib / systemd / sustavMožete vidjeti konfiguracijske datoteke različitih usluga. Otvorimo ssh.usluga datoteka pomoću nano urednik.
sudo nano / lib / systemd / sustav / ssh.uslugaOvdje možete izmijeniti Ponovno pokretanje postavljanje. Prema zadanim postavkama postavljeno je na na-neuspjeh . Ostale opcije za ponovno pokretanje usluge navedene su u nastavku:
- Ne
- stalno
- na-uspjeh
- na-neuspjeh
- na-nenormalan
- na-prekidati
- on-čuvar
Druga opcija u datoteci usluge jedinice je RestartSec koji se koristi za određivanje broja sekundi nakon kojih će se servis ponovno pokrenuti.
[ Servis ]Ponovno pokretanje =uvijek
RestartSec = 5
Ove upute znače da će se usluga ponovno pokrenuti pri pokretanju i, ako se prekine, ponovno će se pokrenuti nakon 5 sekundi.
Nakon izmjene postavke, izvršite sljedeću naredbu za primjenu promjena.
sudo systemctl ponovno učitavanje demonaOstale važne postavke koje treba uzeti u obzir su StartLimitIntervalSec i StartLimitBurst . Ove su opcije korisne za postavljanje maksimalnog vremena i maksimalnog broja ponovnih pokušaja za ponovno pokretanje usluge.
[ Jedinica ]StartLimitIntervalSec = 300
StartLimitBurst = 4
Gornja uputa pokazuje da će systemd automatski prestati pokušavati ponovno pokrenuti uslugu ako se ne pokrene nakon 300 sekundi i 4 ponovna pokušaja.
Da biste provjerili pokreće li se usluga ponovno nakon 5 sekundi ili ne, ukinite uslugu pomoću PID-a usluge i ubiti naredba.
sudo ubiti -9 [ PID ]Nakon 5 sekundi, usluga će se ponovno pokrenuti; koristiti journalctl naredba za provjeru statusa ssh.usluga .
journalctl -u ssh.usluga
Kako ponovno pokrenuti uslugu kada se ovisna usluga ponovno pokrene
U Linuxu su mnoge usluge međusobno ovisne i slično, potrebno ih je ponovno pokrenuti kada se ponovno pokrene ovisna usluga.
Postoje tri različite opcije u datoteci usluge jedinice za ponovno pokretanje usluge, s ponovnim pokretanjem ovisne usluge.
- Dio
- Veže se za
- Zahtijeva
Sve ove opcije obavljaju isti zadatak.
Uzmimo primjer ssh.service koji ovisi o apparmor.service; Linux sigurnosni modul za pružanje potrebnog pristupa. Za popis ovisnosti usluge u Linuxu koristite systemctl s popis-zavisnosti naredba i naziv usluge.
systemctl popis ovisnosti ssh.service
Dakle, ako želite ponovno pokrenuti ssh.service kada ponovno pokrenete apparmor.service, tada trebate uključiti opciju PartOf, BindsTo ili Requires zajedno s nazivom usluge u odjeljku [Unit] datoteke apparmor.service.
Otvorite datoteku apparmor.service.
sudo nano / lib / systemd / sustav / apparmor.servisDodajte sljedeći redak u odjeljak [Jedinica].
Dio =ssh.usluga
Spremite datoteku i izvršite naredbu daemon-reload.
sudo systemctl daemon-reloadSada ponovno pokrenite ssh.usluga a zatim provjerite apparmor.servis log.
Primijetit ćete apparmor.servis ponovno pokrenuo u isto vrijeme ssh.usluga ponovno pokrenut.
Zaključak
Za ponovno pokretanje usluge ili usluga na Linuxu, systemctl naredba se koristi s ponovno pokretanje opcija. The systemctl je uslužni program naredbenog retka koji se koristi za upravljanje systemd uslugama. The ponovno pokretanje opcija pokreće uslugu, a zatim je zaustavlja, aktivirajući neaktivnu uslugu. Međutim, možete ponovno pokrenuti uslugu bez aktivacije pomoću pokušaj-ponovno pokretanje opcija.