A Linux szolgáltatásait a konfigurációs fájljukon keresztül kezelik. Ha módosításokat hajtanak végre egy szolgáltatás konfigurációs fájljában, akkor a módosítások alkalmazásához újra kell indítani a szolgáltatást. A szolgáltatás újraindításakor a systemd újraértékeli a konfigurációs fájlt és alkalmazza a módosításokat.
Ebben az útmutatóban bemutatom, hogyan használhatom a systemctl-t egy szolgáltatás újraindításához Linux alatt.
Jegyzet: Ez az útmutató az Ubuntu 22.04 rendszeren végrehajtott parancsokat és utasításokat tartalmazza. A parancs probléma nélkül fog működni a systemd szolgáltatáskezelőhöz tartozó disztribúciókon.
A systemctl újraindítja a parancsot
A újrakezd parancs lényegében leállít egy szolgáltatást, és újraindítja. Ha a szolgáltatás vagy az egység nem működik, az újraindítási parancs elindítja a működését.
A restart parancs nem távolítja el a szolgáltatáshoz kapcsolódó folyamatokat. Vegyük például a fájlleírókat, amelyek nem negatív azonosítók, amelyeket az operációs rendszer rendelt a szolgáltatás által megnyitott fájlokhoz. Ha újraindít egy szolgáltatást, a szolgáltatáshoz kapcsolódó fájlleíró ott marad az újraindítási folyamat során.
Ha ki akarja törölni a szolgáltatáshoz kapcsolódó összes folyamatot, akkor ezt kifejezetten meg kell tennie állj meg a szolgáltatás és Rajt újra.
Hogyan indítsunk újra egy szolgáltatást
Linuxon újraindíthat egy szolgáltatást a sudo systemctl parancssori eszköz a újrakezd opciót, és adja meg a nevét. Az általános szintaxis az alábbiakban található:
sudo systemctl újraindítás [ szolgáltatás neve ]
Szükséged lesz sudo jogosultságokat a szolgáltatás újraindításához.
Például indítsuk újra a ssh szolgáltatás.
sudo systemctl indítsa újra az ssh.service-tTöbb szolgáltatás újraindításához fűzze hozzá az egyes szolgáltatások nevét a következőhöz újrakezd parancsot szóközzel.
sudo systemctl indítsa újra az ssh.service smbd.service fájltA többi újraindítási parancsot az alábbi táblázat tartalmazza:
próbáld újraindítani | Leállítja vagy elindítja a megadott szolgáltatást vagy szolgáltatásokat, és ha a szolgáltatás nem fut, akkor nem indítja el |
újratöltés vagy újraindítás | Töltse be újra a támogatott szolgáltatást vagy szolgáltatásokat, és ha a szolgáltatás nem támogatott, indítsa újra és aktiválja |
try-reload-or-try-restart | Töltse be újra a támogatott szolgáltatást vagy szolgáltatásokat, és ha a szolgáltatás nem támogatott, akkor aktiválása nélkül indítsa újra |
A fenti parancsokban a .szolgáltatás a bővítés nem kötelező.
A szolgáltatás automatikus újraindítása
Linuxon, ha egy szolgáltatás meghiúsul, akkor a systemd alapértelmezés szerint újraindította. Ennek ellenére sok esetben szükség lehet a szolgáltatás újraindítási módjának módosítására. Például kézi műveletre lehet szükség az egyedi szolgáltatás hibakeresési folyamata során.
A rendszeregység fájlok vagy a szervizfájlok itt találhatók /etc/systemd/system vagy /lib/systemd/system főként a szolgáltatás létrehozásának módjától függően. Az egységfájlok listázásához Linuxon használja a következő parancsot:
ls / lib / systemd / rendszerMegtekintheti a különböző szolgáltatások konfigurációs fájljait. Nyissuk meg a ssh.service fájl segítségével a nano szerkesztő.
sudo nano / lib / systemd / rendszer / ssh.serviceItt módosíthatja a Újrakezd beállítás. Alapértelmezés szerint a következőre van állítva meghibásodás esetén . A szolgáltatás újraindításának további lehetőségei az alábbiak:
- Nem
- mindig
- on-siker
- meghibásodás esetén
- on-abnormális
- megszakításkor
- őrző kutyán
Egy másik lehetőség az egységszolgáltatási fájlban az RestartSec amivel megadható, hogy hány másodperc múlva induljon újra a szolgáltatás.
[ Szolgáltatás ]Újrakezd = mindig
RestartSec = 5
Ezek az utasítások azt jelentik, hogy a szolgáltatás rendszerindításkor újraindul, és ha megszakad, 5 másodperc múlva újraindul.
A beállítás módosítása után hajtsa végre a következő parancsot a módosítások alkalmazásához.
sudo systemctl reload-démonTovábbi fontos beállításokat kell figyelembe venni StartLimitIntervalSec és StartLimitBurst . Ezek a beállítások hasznosak a szolgáltatás újraindításához szükséges maximális idő és a maximális újraindítási idő beállításához.
[ Mértékegység ]StartLimitIntervalSec = 300
StartLimitBurst = 4
A fenti utasítás azt jelzi, hogy a systemd automatikusan leállítja a szolgáltatás újraindításának próbálkozását, ha az 300 másodperc és 4 újrapróbálkozás után nem indul el.
Annak ellenőrzéséhez, hogy a szolgáltatás 5 másodperc után újraindul-e vagy sem, zárja le a szolgáltatást a szolgáltatás PID-jének és a megöl parancs.
sudo megöl -9 [ PID ]5 másodperc elteltével a szolgáltatás újraindul; használja a Journalctl paranccsal ellenőrizheti az állapotát ssh.service .
Journalctl -ban ben ssh.service
A szolgáltatás újraindítása, ha a függő szolgáltatás újraindul
Linuxon sok szolgáltatás kölcsönösen függ egymástól, és hasonlóképpen újra kell indítani őket, ha egy függő szolgáltatást újraindítanak.
Az egység szolgáltatásfájljában három különböző lehetőség található a szolgáltatás újraindítására, egy függő szolgáltatás újraindításával.
- Része
- BindsTo
- Igényel
Mindezek a lehetőségek ugyanazt a feladatot látják el.
Vegyünk egy példát az ssh.service-re, amely az apparmor.service-től függ; egy Linux biztonsági modul a szükséges hozzáférés biztosításához. Egy szolgáltatás függőségének felsorolása Linux-használatban systemctl val vel lista-függőségek parancs és szolgáltatás neve.
systemctl list-dependencies ssh.service
Tehát, ha az apparmor.service újraindításakor újra szeretné indítani az ssh.service-t, akkor az apparmor.service fájl [Unit] szakaszában a PartOf, BindsTo vagy Requires beállítást a szolgáltatásnévvel együtt kell megadnia.
Nyissa meg az apparmor.service fájlt.
sudo nano / lib / systemd / rendszer / apparmor.serviceAdja hozzá a következő sort az [Unit] szakaszhoz.
Része =ssh.service
Mentse el a fájlt, és hajtsa végre a daemon-reload parancsot.
sudo systemctl démon-reloadMost indítsa újra a ssh.service majd ellenőrizze a apparmor.service log.
Észre fogja venni a apparmor.service egyidejűleg újraindult a ssh.service újraindult.
Következtetés
Egy szolgáltatás vagy szolgáltatások Linux rendszeren történő újraindításához a systemctl parancsot a újrakezd választási lehetőség. A systemctl a rendszerszolgáltatások kezelésére szolgáló parancssori segédprogram. A újrakezd opció elindít egy szolgáltatást, majd leállítja, aktiválva egy inaktív szolgáltatást. A szolgáltatást azonban újraindíthatja anélkül, hogy aktiválná a funkció használatával próbáld újraindítani választási lehetőség.