Hogyan lehet szkriptet futtatni rendszerindításkor a Debian 11-ben

Written by redzs

2022.07.07.

Kategóriák

Hogyan lehet szkriptet futtatni rendszerindításkor a Debian 11-ben

BAz oot up egyszerű kifejezéssel a bekapcsolástól a felhasználó indulásáig eltelt időt jelenti. Ez egy olyan rendszerindító szkript használatával érhető el, amely utasításokat tartalmaz a betöltendő kódra, valamint az indítandó folyamatokra és alkalmazásokra vonatkozóan.

A Linux indításának van néhány szakasza (a systemd vagy System V init rendszerbe való indítás előtt és az asztali környezet betöltése előtt), és állítsa be saját automatikus indító szkriptjét vagy programját bármely adott szakaszban, ahol lehet egyetlen parancs, vagy inkább parancsok sorozata vagy végrehajtható fájl shell script. Mindazonáltal tájékoztató jellegű megjegyezni, hogy lehetnek eltérések az indítási eljárásban a különböző Linux disztribúciók és verziók.

Először a Linux modern verziói indulnak el systemd míg a régebbi verziók használják System V init. Mindkét módszer futni fog cron és rc.local az asztali környezetek előtt KDE vagy GNOME be vannak töltve. A másik oldalon a szerver alapú Linux disztribúciók az alapértelmezett shellt futtatják, például,

Bash, miután a felhasználó bejelentkezik a konzolba az asztali környezet betöltése helyett.Szolgáltatások és parancsfájlok megfelelő hozzáadásához indításkor Debian 11, létre kell hoznia Systemd egységeket. Ez az útmutató három módszerre összpontosít a szkriptek hozzáadására az induláskor Debian 11 gép:

  1. systemd használatával
  2. cron használatával
  3. Az rc.local használatával

Kezdjük.

Mi az a rendszeregység?

A Systemd egységek konfigurációs fájlok, amelyek információkat tartalmaznak bizonyos rendszerfájlok megfelelő kezeléséhez vagy végrehajtásához. A systemd-ben az egység minden olyan erőforrást jelöl, amelyen a rendszer tudja, hogyan kell működni és kezelni. A Systemd egységeket általában a szolgáltatások indítására, leállítására, kezelésére, rendszerindítási folyamatok szervezésére, feladatok karbantartására és karbantartására használják folyamatok, socketek létrehozása, automatikus csatlakoztatási pontok, fájlok vagy partíciók cseréje, fájlrendszer csatlakoztatása és inicializálás hardver.

A Systemd egységek az /etc/systemd/system könyvtárban találhatók. Minden olyan szkriptet, amelyet rendszerindításkor Systemd egységekkel szeretne futtatni, a fent említett könyvtárban található fájlban (egységben) fel kell tüntetni.

közötti kapcsolat egyszerűsítése érdekében systemd és egységek Jobb, ha egy csapat edzőjeként rendszerezzük az egységeket, mint a csapat kényelmét és szükségleteit, például labdákat, tyúkszemet, edzőtermet, játszóteret, játékkészleteket, csak hogy néhányat említsünk. Tehát ahhoz, hogy az edző irányítsa a csapatot annak érdekében, hogy az jobban teljesítsen, a rendelkezésre álló felszerelést a csapat alapos fejlesztésére használja. Hasonlóképpen, a systemd egységeket használ a rendszerfolyamatok és szolgáltatások vezérlésére és kezelésére.

Néhány Systemd Unit típus a következőket tartalmazza:
  • Cél – Egységek gyűjteménye, amely egy szinkronizálási pontot ír le. A szinkronizálási pontot rendszerindításkor használják a rendszer adott állapotba való bekapcsolására.
  • Mount – Egy ilyen egység vezérli a fájlrendszer csatolási pontját.
  • Eszköz – Az ilyen típusú egység eszközalapú aktiválást hajt végre, mint egy eszközillesztő.
  • Aljzat – Ez az egységtípus akkor aktivál egy szolgáltatást, amikor a szolgáltatás bejövő forgalmat kap egy hallgatási aljzaton.
  • Pálya – Ez az egységtípus figyeli a fájlokat/könyvtárakat, majd aktivál/deaktivál egy szolgáltatást, ha a megadott fájl vagy könyvtár lekérésre kerül.
  • Időzítő – Ez az egységtípus egy meghatározott szolgáltatás aktiválását és deaktiválását végzi el egy időzítő alapján, vagy amikor a beállított idő letelik.
  • Hatály – Idegen folyamatokat rendszerező és irányító egység.

A rendszeregységek listázása

Az alábbiakban egy gyors áttekintés található a rendszerünkben meglévő rendszeregységekről, amelyek a ls parancs.

ls /etc/systemd/system
rendszerinformációk listázása
rendszerinformációk listázása

A fenti pillanatképen kizárt fájlok egyike a tomcat.service, amelynek tartalma a következő képen látható.

tomcat.service
tomcat.service

A fenti pillanatképen látható egységkonfigurációs fájlokkal való megismerkedéshez tekintse meg az alábbi részletes információkat. Ne aggódjon miattuk, mivel a szkript futtatásához létrehozandó egység valamivel egyszerűbb lesz.

Az egység direktívák közé tartozik;
  • Leírás: Ez az utasítás általában lehetővé teszi egy egység leírásának hozzáfűzését; itt beállíthatja a nyugtázásra kerülő egység nevét.
  • Akar: Az egységfüggőségeket általában itt adják meg. Megjegyzendő, hogy különféle irányelvek léteznek erre a célra. Például az irányelvet Igényel szigorú függőséget ír elő, amelyek nélkül az egység nem tud működni. A követelményekkel ellentétben a Wants a függőségek meghatározására szolgál, amelyek nélkül az egység tovább tud működni.
  • Után: Az aktuális egység az ebben az irányelvben meghatározott egység után indul.

[Szolgáltatás] szakasz irányelvei:

  • Típus: A forking azt jelzi, hogy a szolgáltatást le kell állítani, miközben az utódfolyamatokat megtartják, amelyekhez folyamatazonosítót (PID) kell hozzárendelni.
  • Környezet: Itt lehet megadni az egység környezeti változóit.
  • ExecStart: Ez az utasítás lehetővé teszi a végrehajtani kívánt elérési út és parancsok megadását.
  • ExecStop: kimondhatja az egység leállításához használt parancsot.
  • SuccessExitStatus: Ez az utasítás lehetővé teszi a kilépési állapot és a jelzések felsorolását.
  • Felhasználó: azonosíthatja az egység felhasználói tulajdonosát.
  • Csoport: felsorolhatja az egység csoporttulajdonosát.
  • UMask: megadhatja a felhasználói maszkot.
  • RestartSec: Ha az egység spontán újraindul, megadhatja a várakozási időt a szolgáltatás újraindítására.
  • Újrakezd: felvázolhatja a Systemd számára, hogy mikor kell újraindítani az egységet. Az elérhető opciók mindig a figyelőkutya bekapcsolása, meghibásodáskor, on-abnormal, on-success és on-abort.

Az [Install] direktíva a fenti példányban WantedBy.

  • WantedBy: Ez az utasítás lehetővé teszi, hogy az egységet függőségként vázolja fel; rokon a Akar direktíva, hanem azt kell kijelölni, ha az aktuális mértékegység jól átgondolt egy másik egység függőségeként.

Egyéb szokásos utasítások a [Unit] szakaszban, amelyek nem szerepeltek az előző képernyőképen:

  • Igényel: Ebben az irányelvben függőségeket jelölhet ki a rendszerindítási hibák elkerülése érdekében. Szemben a Akar direktíva, ha a Requires direktívában megjelölt függőség nem teljesül, az egység nem fog működni.

A [Szolgáltatás] részben:

  • PIDF fájl: A forking direktíva szükségessé teszi a PIDFile direktívát, amely tartalmazza a gyermekfolyamat fájl PID-jének elérési útját, hogy a Systemd észlelje azt.
  • StartLimitInterval: meghatározza, hogy az egységnek 60 másodperce van 10 újraindítási kísérletre, ha hiba esetén.
  • StartLimitBurst: Ez az utasítás a kísérletek korlátját mutatja, az előző példában tíz kísérlet 60 másodpercen belül.

tudsz látogassa meg ezt a linket További információért a Systemd egységekről.

Futtasson egy szkriptet rendszerindításkor a Debian 11-ben

1. módszer: A systemd egység használata parancsfájl futtatására rendszerindításkor

A szkript futtatása rendszerindításkor egyszerű lehet, és kevesebb konfigurációval rendelkezik, mint a korábban az egység általános tartalmának megjelenítésére használt tomcat.service fájl.

A rendszerindításkor futó szkriptekre vonatkozó információkat tartalmazó fájlok (egységek) az /etc/systemd/system könyvtárban helyezkednek el. A rendszerindításkor futtatandó szkript kifejezéséhez új egységet kell létrehoznia ehhez a szkripthez. Mint ilyen, bármilyen szerkesztőt felhasználhat létrehozási célokra. Példánkban azonban a nano szerkesztőt fogjuk használni, amelyben létrehozunk egy script.service nevű egységet. Vegye figyelembe, hogy ez a név bármelyik preferenciájára módosítható, hogy kényelmesen azonosíthassa a szkriptet.

sudo nano /etc/systemd/system/script.service
nano szerkesztő
nano szerkesztő

Ezután másolja ki és illessze be a következő kódot az /etc/systemd/system alatt létrehozott fájlba.

 a forgatókönyv elérési útjával. [Unit] Description=Az Ön szkriptjének neve After=default.target [Szolgáltatás] ExecStart=/PATH/TO/Script.sh [Telepítés]
Másolja be a következő kódot
Másolja be a következő kódot.

Ezt követően ne felejtse el cserélni a szkript nevével és a szkript elérési útjával az alábbiak szerint:

lecserélt fájl
lecserélt fájl

Miután átmásolta az adatokat az /etc/systemd/system/ alatti fájlba, engedélyeznie kell az alábbi systemctl paranccsal.

sudo systemctl enable script.service
engedélyezi a fájlt
engedélyezi a fájlt

Jegyzet: Ne felejtse el cserélni az egységhez rendelt megfelelő névvel.

És bumm! A szkript készen áll a Debian 11-ben való indulásra

2. módszer: Hogyan lehet automatikusan futtatni egy programot Linux indításakor a Cronon keresztül

A Cron egy démon, amelyet ütemezett parancsok futtatására használnak. A parancsok a crown job táblában vagy contrab-ban vannak tárolva, és a rendszer minden felhasználója számára sajátosak. A rendszerindítás során vagy a System V init vagy a systemd segítségével indítja el, és ütemezheti a munkát, ill ehelyett a programot közvetlenül a rendszerindítás során kell végrehajtani, gondosan végignézve a következőt lépések:

1. lépés: Nyissa meg az alapértelmezett contrab szerkesztőt a következő paranccsal:

crontab -e

Ha először futtatja a contrab parancsot, akkor ki kell választania egy szerkesztőt, amint azt a következő kódrészlet mutatja:

$ crontab -e. nincs crontab felhasználó számára – üres tábla használata Válasszon ki egy szerkesztőt. A későbbi módosításhoz futtassa a „select-editor” parancsot. 1. /bin/nano < legegyszerűbb. 2. /usr/bin/vim.basic. 3. /bin/ed Válasszon 1-3 [1]:

A megadott számú opció kiválasztását követően egy kontrab jön létre az Ön számára, amely a felhasználó jogosultságai alapján kerül végrehajtásra. Abban az esetben, ha a programnak root felhasználóként kell futnia, futtassa a contrab -e-t maga root felhasználóként

2. lépés: Adjon hozzá egy @reboot kezdetű sort

# m h dom mon dow parancs. @reboot
adjunk hozzá egy kezdővonalat
adjunk hozzá egy kezdővonalat

3. lépés: Illessze be a kívánt parancsot a program indításához a @ újraindítás után az alábbiak szerint:

@reboot /sbin/ip addr | grep inet\ | farok -n1 | awk '{ print $2 }' > /etc/issue && echo "" >> /etc/issue
parancs beszúrása a program indításához
parancs beszúrása a program elindításához

Az @reboot meghatározza a rendszerindítás során végrehajtandó feladatot.

Jegyzet: Győződjön meg arról, hogy a programok teljes elérési útját használja, amikor csak lehetséges, és írja be a parancsokat egyetlen sorban, hogy elkerülje a rendszerrel való ütközést.

4. lépés: Mentse el a fájlt

A szerkesztő bezárása után a „Ctrl + x” az alábbiak szerint

Nyomja meg a ctrl + x billentyűt
Nyomja meg a Ctrl + x billentyűket

azután „Y” menteni,

y menteni
y menteni

Látnod kell egy parancsot „új kontrab telepítése” a terminálban az alábbiak szerint:

új kontrab telepítve
új kontrab telepítve

5. lépés: Konfiguráció

Végül lefuttathat egy ellenőrzést, hogy megbizonyosodjon arról, hogy a kontrab megfelelően lett konfigurálva. Fontos azonban megjegyezni, hogy ez a lépés nem kötelező

crontab -l
konfiguráció ellenőrzése
konfiguráció ellenőrzése

És ennek így kell lennie, srácok!

3. módszer: Egy program automatikus futtatása Linux indításakor az RC.LOCAL segítségével

Az rc.local egyszerűen a System V init rendszer öröksége. Ez az utolsó szkript, amely lefut, mielőtt az asztali környezet bejelentkezési képernyőjére vagy a terminálon megjelenő bejelentkezési képernyőre lépne. Ez általában egy Bash shell szkript, és bármit futtathat a szkriptből. A helyi rc.local parancsfájl konfigurálásához kövesse az alábbi lépéseket.

1. lépés: Először is hozza létre az /etc/rc.local fájlt, ha az nem létezik a rendszerében, az előnyben részesített szerkesztővel és root felhasználóként. Esetünkben a Vi szerkesztővel megyünk a következő parancs futtatásával:

sudo vi /etc/rc.local
nyissa meg a vi alkotót
nyissa meg a vi alkotót

2. lépés: Helyőrző kód hozzáadása

Ezután illessze be a következő helyőrző kódot a fájlba

#!/bin/bash kilépés 0
add hozzá a parancsot
add hozzá a parancsot

Az értelmezővel kell kezdődnie (/bin/bash), és egy kilépési kóddal kell végződnie (0, amely a sikert jelzi).

3. lépés: Parancs és logika hozzáadása

Itt szükség szerint parancsokat és logikákat ad hozzá a fájlokhoz.

/sbin/ip addr | grep inet\ | farok -n1 | awk '{ print $2 }' > /etc/issue. echo "" >> /etc/issue

Vessen egy pillantást ennek mikéntjére a következő pillanatfelvételen.

adjon hozzá parancsot és logikát a fájlhoz
adjon hozzá parancsot és logikát a fájlhoz

4. lépés: Mentse el, és lépjen ki a Vi Editorból

Egy fájl mentéséhez és kilépéséhez a Vim szerkesztőben használja a „:wq” parancs. Egyszerre szeretnénk menteni a fájlt, és kilépni a szerkesztőből, hogy lefusson a parancs, amely végrehajthatóvá teszi a fájlt. Ennek megfelelően nyomja meg az ESC gombot, amely normál módba vált. Ezután írja be a :wq parancsot, és nyomja meg „Belép.”

mentés és kilépés
mentés és kilépés

5. lépés: Tegye végrehajthatóvá a fájlt

A fájl mentése után a következő paranccsal futtathatóvá kell tennünk:

sudo chmod a+x /etc/rc.local
futtathatóvá tenni a fájlt
futtathatóvá tenni a fájlt

A fájlt ezután root felhasználóként kell végrehajtani a rendszerindítás során.

Következtetés

Végezetül: szkriptek futtatása rendszerindításkor Debian 11 A Systemd, cron és rc.local használata viszonylag egyszerű. Bármely Linux-felhasználó gyorsan elvégezheti ezt a feladatot egy egyszerű fájl létrehozásával a units könyvtárban. Ez a cikk a Linux disztribúció, különösen a Debian indítási szakaszában a szkript futtatásának különböző módjait ismerteti.

Mindegyiknek megvannak a maga előnyei és hátrányai, de általánosságban elmondható, hogy a systemd és a cron a leginkább preferált opciók. A másik oldalon használhatod az rc.local-t is, amit szintén megnéztünk.

Forrás: Linux Tips

0 hozzászólás

Egy hozzászólás elküldése

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Debian TutoriálokHogyan lehet szkriptet futtatni rendszerindításkor a Debian 11-ben