Raspberry Pi je zmogljiv SBC (enojni računalnik), ki ga lahko uporabljate za različne aplikacije in projekte. Njegova vsestranskost je v zmožnosti izvajanja vseh vrst programov, vključno s skripti po meri, deloma zahvaljujoč OS Raspberry Pi in drugim operacijskim sistemom, ki jih izvaja Linux.
Zagon skripta ali programa na Raspberry Pi je tako preprost kot iskanje v sistemu in njegovo izvajanje. Kaj pa, če želite ta postopek avtomatizirati, morda zato, ker to zahteva vaš projekt ali ker želite poenostaviti potek dela?
Eden od odgovorov na to je učenje uporabe systemd.
Kaj je Systemd?
systemd je zbirka sistemskih komponent za konfiguracijo storitev in vedenje v sodobnih sistemih Linux. Identificiran je z PID (identifikator procesa) od 1, saj gre za prvi postopek, ki se zažene ob zagonu sistema. Namen sistema je, da vam pomaga pri upravljanju in izvajanju programov ob zagonu sistema. In to boste izkoristili za zagon programa ob zagonu na Pi.
Kot smo že omenili, obstaja več načinov za zagon programov ob zagonu v sistemih Linux, kot so rc.local, cron in samodejni zagon. Vendar pa se systemd zgodi z boljšo rešitvijo lota, če želite zagnati programe GUI (grafični uporabniški vmesnik), avtomatizirajte aplikacije, ki se bodo izvajale po začetku nekaterih sistemskih procesov, ali znova in znova zaženite programe do razporeda deluje.
Sorodno: Kako razporediti naloge v Linuxu s Cron in Crontab
Kako uporabiti systemd za zagon programov ob zagonu
systemd je nekoliko bolj zapletena metoda za zagon programov ob zagonu v sistemih Linux. Vendar fleksibilnost načrtovanja, ki jo ponuja v primerjavi z drugimi metodami - tistimi, ki smo jih omenili zgoraj - v vseh pogledih popolnoma odtehta njegovo zapletenost.
Metoda systemd uporablja datoteke enot, ki so podobne datotekam .ini, ki vsebujejo informacije o kodiranju o napravah, storitvah, vtičnicah, zagonskem cilju in drugih bistvenih sistemskih komponentah.
Datoteke enot so različnih vrst. Torej, glede na to, kakšen vir želite prijaviti, morate ustrezno izbrati vrsto datoteke enote. V tem priročniku pa se bomo držali datotek .service, ki vam omogočajo upravljanje zagonskega vedenja programov in skriptov v sistemu.
Spodaj je razčlenitev korakov, povezanih z zagonom skripta / programa ob zagonu z uporabo systemd.
Ustvarjanje storitve
Če želite program nastaviti tako, da se zažene ob zagonu, ustvarite datoteko servisne enote, ki bo sistemu povedala, kateri program naj zažene in kdaj. Tukaj je opisano, kako to storiti.
- V okno CLI vnesite sudo nano /lib/systemd/system/display.service. Za svojo storitev lahko uporabite katero koli ime, če se konča s pripono .service.
- V datoteko storitve prilepite naslednje vrstice kode:
[Enota]
Opis = PiCounter
Po = network.target
[Storitev]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Ponovni zagon = vedno
Uporabnik = pi
[Namesti]
WantedBy = multi-user.target
Vse vaše običajne nastavitvene možnosti spadajo pod Enota in Namestite razdelki za storitve, medtem ko so možnosti konfiguracije za storitve pod razdelkom storitve.
Nekaj zgornjih parov direktiv in vrednosti, ki jih boste morda morali spremeniti, vključuje:
jaz. Po: Določa, kdaj začeti storitev. Nastavitev na network.target zagotavlja, da se navedena vrednost - v tem primeru network.target - začne pred začetkom trenutne enote. Vendar ne usmerja razmerja odvisnosti, ki naj se storitev sproži; to se naredi z drugimi direktivami, kot so Wants, Requires in WantedBy.
Seveda lahko to vrednost spremenite tako, da ustreza vašim projektnim zahtevam. Če na primer želite, da se vaš program zažene, ko se Raspberry Pi poveže z omrežjem, lahko uporabite network-online.target vrednost. Lahko se sklicujete na Fedorina dokumentacija o systemd če želite izvedeti več o teh vrednotah.
ii. ExecStart: Vsebuje absolutno pot in ime programa / skripta, ki ga želite izvesti ob zagonu. Torej, odvisno od tega, kaj želite izvesti, morate dodati vrednosti za obe direktivi.
iii. Uporabnik: Identificira ime vašega Raspberry Pi. Če ste spremenili ime svojega Pi, morate to vrednost vnesti za uporabnika.
iv. WantedBy: To je najpogostejši način določanja sprožilca za enoto. Z nastavitvijo na več uporabniški cilj, lahko vzpostavite razmerje odvisnosti, ki bo zagnalo program, ko bo sistemski nadzor predan v večuporabniško lupino.
Poleg tega to zažene tudi vaš program, preden se Pi-ov sistem X-Windows zažene, kar pomeni, da se vaš program zažene še preden se prijavite v sistem. Če želite, da se skript zažene, preden se prijavite v Raspberry Pi, vam to omogoča.
Zgornje vrstice kode delujejo za programe, ki niso GUI. Če pa želite zagnati program GUI z uporabo systemd, morate v datoteko storitve dodati naslednjo kodo:
[Enota]
Opis = PiCounter
Po = network.target
[Storitev]
Okolje = Prikaz =: 0
Okolje = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Ponovni zagon = vedno
[Namesti]
WantedBy = multi-user.target
V zgornjem paru direktiva-vrednost morate spremeniti le vrednost za ExecStart direktive. Zamenjajte tisto v bloku kode s programom, ki ga želite zagnati ob zagonu. Ko zapolnite datoteko storitve, pritisnite CTRL + O da ga shranite.
Preizkusite storitev
Ko je storitev pripravljena, ročno preverite, ali deluje. Za to v terminal vnesite naslednji ukaz: sudo systemctl start display.service. Storitev bi morala uspešno izvajati vaša navodila.
Ko se to zgodi, ga prekinite z sudo systemctl stop display.service.
Omogočite storitev
Če ste program uspešno zagnali z uporabo storitve, je čas, da ga omogočite tako, da samodejno zažene program vsakič, ko zaženete Raspberry Pi.
Če želite to narediti, vnesite sudo systemctl omogoči display.service v oknu terminala. In ko je to končano, vstopite sudo ponovni zagon da znova zaženete Pi.
Ko se Raspberry Pi zažene, naj sistem zažene vaš program v skladu z navodili.
Avtomatiziranje zagona programa ob zagonu Raspberry Pi
Tako kot večina sistemov Linux, tudi Raspberry Pi OS omogoča izvajanje operacij na več načinov, ostaja pa zvest tudi načrtovanju zagonov programov. Torej, če želite ob zagonu zagnati programe / skripte GUI in želite boljši nadzor nad načrtovanjem, je systemd očitno boljša metoda.
Kljub temu, če želite enostavnejšo rešitev ali vaše zahteve projekta zahtevajo posebno razporejanje, si lahko ogledate naš vodnik za Zagon programa ali skripta Raspberry Pi ob zagonu če želite izvedeti več.
Bi radi izkoristili več od vašega Raspberry Pi? Tukaj je veliko koristnih ukazov za krmarjenje po terminalu Pi in programiranje njegovih GPIO nožic.
Preberite Naprej
- Naredi si sam
- Raspberry Pi
Yash je zaposlen v MUO za področje DIY, Linux, programiranje in varnost. Preden je svojo strast našel v pisanju, se je razvijal za splet in iOS. Njegovo pisanje lahko najdete tudi na TechPP, kjer pokriva druge vertikale. Razen tehnologije se rad pogovarja o astronomiji, formuli 1 in urah.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!
Še en korak…!
Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.