A Raspberry Pi egy nagy teljesítményű SBC (egypaneles számítógép), amelyet különféle alkalmazásokhoz és projektekhez használhat. Sokoldalúsága abban rejlik, hogy képes mindenféle program futtatására, beleértve az egyedi szkripteket is, köszönhetően részben a Raspberry Pi OS-nek és más általa futtatott Linux-alapú operációs rendszereknek.

Egy szkript vagy program futtatása a Raspberry Pi-n ugyanolyan egyszerű, mint megtalálni a rendszeren és végrehajtani. De mi van akkor, ha automatizálni szeretné ezt a folyamatot, talán azért, mert a projektje megköveteli, vagy azért, mert ésszerűsíteni szeretné a munkafolyamatát?

Az egyik válasz erre a systemd használatának megtanulása.

Mi a Systemd?

A systemd egy sor rendszerkomponens a szolgáltatás konfigurálásához és a modern Linux rendszerek viselkedéséhez. Ezzel azonosítják a PID (folyamatazonosító) 1-ről, mivel ez az első indítási folyamat a rendszer indításakor. Általánosságban a systemd célja, hogy segítsen a programok indításakor a programok kezelésében és végrehajtásában. És ezt fogja kihasználni a program indításakor a Pi indításakor.

instagram viewer

Amint azt eredetileg említettük, számos módszer létezik a programok futtatásához indításkor Linux rendszereken, például rc.local, cron és autostart. Azonban a systemd a tétel jobb megoldásával történik, ha GUI (grafikus felhasználói felület) programokat szeretne elindítani, automatizálja az alkalmazásokat, hogy bizonyos rendszerfolyamatok megkezdése után fussanak, vagy futtassa újra és újra a programokat az ütemezésig művek.

Összefüggő: A feladatok ütemezése Linux rendszerben a Cron és a Crontab segítségével

A systemd használata a programok indításához indításkor

A systemd egy kicsit bonyolultabb módszer a programok indítására indításkor Linux rendszereken. Azonban az ütemezési rugalmasság, amelyet más módszerekkel kínál - a fent említettekkel szemben - minden szempontból teljesen felülmúlja annak összetettségét.

A systemd módszer egységfájlokat használ, amelyek olyan típusúak, mint az .ini fájlok, amelyek kódolási információkat tárolnak az eszközökről, szolgáltatásokról, aljzatokról, indítási célról és egyéb alapvető rendszerkomponensekről.

Az egységfájlok különféle típusúak. Tehát annak alapján, hogy milyen erőforrást szeretne deklarálni, ennek megfelelően ki kell választania az egység fájltípust. Ennek az útmutatónak az alkalmazásában azonban ragaszkodunk a .service egység fájlokhoz, amelyek lehetővé teszik a programok és szkriptek indítási viselkedésének kezelését a rendszeren.

Az alábbiakban bemutatjuk a szkript / program indításának lépéseit a rendszerd használatakor.

Szolgáltatás létrehozása

Annak beállításához, hogy a program az indításkor fusson, hozzon létre egy szolgáltatási egység fájlt, amely megmondja a systemd-nek, hogy mely programot és mikor kell futtatni. Így teheti meg.

  1. Írja be a CLI ablakba sudo nano /lib/systemd/system/display.service. Bármilyen nevet használhat a szolgáltatásához, amennyiben az a .service kiterjesztéssel végződik.
  2. A szolgáltatásfájlba illessze be a következő kódsorokat:
    [Mértékegység]
    Leírás = PiCounter
    Után = network.target
    [Szolgáltatás]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Újraindítás = mindig
    Felhasználó = pi
    [Telepítés]
    WantedBy = többfelhasználós.cél

Az összes szokásos konfigurációs opció a Mértékegység és Telepítés szakaszok, míg a szolgáltatásspecifikus konfigurációs lehetőségek a Szolgáltatás szakasz alatt találhatók.

Néhány fenti irányelv-érték pár, amelyet módosítanod kell:

én. Utána: Meghatározza, hogy mikor kell elindítani a szolgáltatást. Beállítása hálózat.cél biztosítja, hogy a felsorolt ​​érték - ebben az esetben a network.target - az aktuális egység megkezdése előtt kezdődjön. Nem irányítja azonban a szolgáltatás függőségi kapcsolatát; ezt más irányelvek, például a Wants, a Requires és a WantedBy révén teszik meg.

Természetesen módosíthatja ezt az értéket a projekt követelményeinek megfelelően. Például, ha azt szeretné, hogy a program futtatása után a Raspberry Pi csatlakozzon a hálózathoz, használhatja a network-online.target érték. Hivatkozhat Fedora dokumentációja a systemd-ről hogy többet megtudjon ezekről az értékekről.

ii. ExecStart: Tartja az abszolút elérési utat és az indításkor végrehajtani kívánt program / szkript nevét. Tehát attól függően, hogy mit akar végrehajtani, hozzá kell adnia értékeket mindkét irányelvhez.

iii. Felhasználó: Azonosítja a Raspberry Pi nevét. Ha megváltoztatta Pi nevét, akkor meg kell adnia ezt az értéket a felhasználó számára.

iv. WantedBy: Ez az egység kiváltó okának megadásának leggyakoribb módja. Azzal, hogy többfelhasználós.cél, létrehozhat egy függőségi kapcsolatot, amely futtatja a programot, amikor a rendszer vezérlőjét átadják a többfelhasználós héjnak.

Ezenkívül ez a programot a Pi X-Windows rendszerének elindítása előtt is futtatja, ami azt jelenti, hogy a program még a rendszerbe való bejelentkezés előtt fut. Ha azt szeretné, hogy egy szkript fusson, mielőtt bejelentkezik a Raspberry Pi-re, ez lehetővé teszi ezt.

A fenti kódsorok nem GUI programok esetén működnek. Ha azonban egy GUI programot szeretne futtatni a systemd használatával, akkor a következő kódot kell hozzáadnia a szolgáltatásfájljához:

[Mértékegység]
Leírás = PiCounter
Után = network.target
[Szolgáltatás]
Környezet = Kijelző =: 0
Környezet = XAUTHORITY / home / pi / .Hatóság
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Újraindítás = mindig
[Telepítés]
WantedBy = többfelhasználós.cél

A fenti irányelv-érték párban csak a. Értékére van szükség ExecStart irányelv. Cserélje ki a kódblokkban lévő programot az indításkor futtatni kívánt programra. Miután feltöltötte a szolgáltatási fájlt, nyomja meg a gombot CTRL + O hogy megmentse.

Tesztelje a szolgáltatást

Ha a szolgáltatás készen áll, ellenőrizze manuálisan, hogy működik-e. Ehhez írja be a következő parancsot a terminálba: sudo systemctl start display.service. A szolgáltatásnak sikeresen végre kell hajtania az utasításokat.

Miután ez megtörtént, fejezze be a következővel: sudo systemctl állítsa le a kijelzőt.szolgáltatás.

Engedélyezze a szolgáltatást

Ha sikerült sikeresen futtatnia a programot a szolgáltatás használatával, itt az ideje annak engedélyezésére, hogy a Raspberry Pi indításakor minden alkalommal automatikusan futtassa a programot.

Ehhez írja be sudo systemctl engedélyezze a display.service szolgáltatást a terminál ablakában. És ha ez megtörtént, lépjen be sudo reboot hogy újraindítsa a Pi-t.

Miután elindult a Raspberry Pi, a systemd-nek futtatnia kell a programot a megadott utasítások szerint.

A programindítás automatizálása az indításkor a Raspberry Pi-n

A legtöbb Linux rendszerhez hasonlóan a Raspberry Pi OS is lehetővé teszi a műveletek végrehajtását többféleképpen, és továbbra is igaz marad a programindítások ütemezésére is. Tehát, ha indításkor GUI programokat / szkripteket akar indítani, és jobban szeretné irányítani az ütemezését, akkor a systemd egyértelműen jobb módszer.

Mindazonáltal, ha egyszerűbb megoldást szeretne, vagy a projekt követelményei konkrét ütemezést igényelnek, akkor ellenőrizze az útmutatónkat Raspberry Pi program vagy parancsfájl futtatása indításkor többet tanulni.

Email
Az Ultimate Raspberry Pi Commands Cheat Sheet

Szeretne többet kihozni a Raspberry Pi-ből? Itt rengeteg hasznos parancs található a Pi termináljában való navigáláshoz és a GPIO csapok programozásához.

Olvassa el a következőt

Kapcsolódó témák
  • DIY
  • Raspberry Pi
A szerzőről
Yash Wate (8 cikk megjelent)

Yash a MUO munkatársa a barkácsolás, a Linux, a programozás és a biztonság területén. Mielőtt írásban megtalálta szenvedélyét, korábban az internetre és az iOS-re fejlesztett. Megtalálhatja írását a TechPP-n is, ahol a többi vertikálissal foglalkozik. A technikán kívül szívesen beszél a csillagászatról, a Forma-1-ről és figyeli.

Több Yash Wate-től

Iratkozzon fel hírlevelünkre

Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!

Még egy lépés…!

Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.

.