Raspberry Pi moćan je SBC (računalo s jednom pločom) koji možete koristiti za razne aplikacije i projekte. Njegova svestranost leži u sposobnosti pokretanja svih vrsta programa, uključujući prilagođene skripte, dijelom zahvaljujući Raspberry Pi OS-u i drugim operativnim sustavima koji se temelje na Linuxu.
Pokretanje skripte ili programa na Raspberry Pi jednostavno je poput pronalaženja u sustavu i izvršavanja. Ali što ako želite automatizirati ovaj postupak, možda zato što to zahtijeva vaš projekt ili zato što želite pojednostaviti svoj tijek rada?
Jedan od odgovora na to je učenje kako koristiti systemd.
Što je Systemd?
systemd je skup sistemskih komponenata za konfiguraciju usluge i ponašanje na modernim Linux sustavima. Poistovjećuje se s PID (identifikator procesa) od 1 jer je to prvi postupak za pokretanje prilikom pokretanja sustava. Općenito, svrha sustava je da vam pomogne u upravljanju i izvršavanju programa pri pokretanju sustava. I to je ono što ćete iskoristiti za pokretanje svog programa prilikom pokretanja na Pi-u.
Kao što je u početku spomenuto, postoji nekoliko metoda za pokretanje programa pri pokretanju na Linux sustavima, poput rc.local, cron i autostart. Međutim, systemd se događa s boljim rješenjem lota ako želite pokrenuti GUI (grafičko korisničko sučelje) programe, automatizirajte aplikacije koje će se pokretati nakon što započnu određeni procesi sustava ili iznova i iznova pokrećite programe sve dok ne zakažete raspored djela.
Povezano: Kako rasporediti zadatke u Linuxu s Cron i Crontab
Kako koristiti Systemd za pokretanje programa pri pokretanju
systemd je malo složenija metoda pokretanja programa pri pokretanju na Linux sustavima. Međutim, fleksibilnost raspoređivanja koju nudi u odnosu na druge metode - one koje smo gore spomenuli - u potpunosti nadmašuje njezinu složenost u svakom aspektu.
Metoda systemd koristi jedinstvene datoteke, koje su slične .ini datotekama koje sadrže informacije o kodiranju o uređajima, uslugama, utičnicama, cilju pokretanja i drugim bitnim komponentama sustava.
Datoteke jedinica su različitih vrsta. Dakle, na temelju vrste resursa koju želite prijaviti, prema tome morate odabrati vrstu jedinice datoteke. U svrhu ovog vodiča, pridržavat ćemo se datoteka .service unit, koje vam omogućuju upravljanje pokretačkim ponašanjem programa i skripti u sustavu.
Ispod je analiza koraka uključenih u pokretanje skripte / programa prilikom pokretanja pomoću systemd-a.
Stvaranje usluge
Da biste postavili svoj program za pokretanje pri pokretanju, stvorite datoteku servisne jedinice koja će reći systemd-u koji će se program pokrenuti i kada. Evo kako to učiniti.
- U prozor CLI upišite sudo nano /lib/systemd/system/display.service. Za svoju uslugu možete koristiti bilo koje ime ako završava s nastavkom .service.
- U datoteku usluge zalijepite sljedeće retke koda:
[Jedinica]
Opis = PiCounter
Nakon = mreža.cilj
[Servis]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restart = uvijek
Korisnik = pi
[Instalirati]
WantedBy = višekorisnički.cilj
Sve vaše uobičajene opcije konfiguracije spadaju u Jedinica i Instalirati odjeljci, dok opcije konfiguracije specifične za uslugu idu pod odjeljak Usluga.
Nekoliko gore navedenih parova smjernica-vrijednost koje ćete možda trebati izmijeniti uključuju:
ja Nakon: Određuje kada pokrenuti uslugu. Postavljajući ga na mreža.cilj osigurava da navedena vrijednost - u ovom slučaju network.target - započne prije početka trenutne jedinice. Međutim, to ne usmjerava odnos ovisnosti koji će usluga pokretati; to je učinjeno kroz druge direktive poput Wants, Requires i WantedBy.
Naravno, ovu vrijednost možete promijeniti u skladu sa zahtjevima vašeg projekta. Na primjer, ako želite da se vaš program izvrši nakon što se Raspberry Pi poveže s mrežom, možete koristiti network-online.target vrijednost. Možete se pozvati na Fedorina dokumentacija o systemd kako biste saznali više o tim vrijednostima.
ii. ExecStart: Sadrži apsolutni put i naziv programa / skripte koji želite izvršiti pri pokretanju. Dakle, ovisno o tome što želite izvršiti, morate dodati vrijednosti za obje ove direktive.
iii. Korisnik: Identificira ime vašeg Raspberry Pi. Ako ste promijenili ime svog Pija, morate unijeti tu vrijednost za korisnika.
iv. WantedBy: To je najčešći način određivanja okidača za jedinicu. Postavljanjem na višekorisnički.cilj, možete uspostaviti odnos ovisnosti koji će pokretati program kada se kontrola sustava preda u višekorisničku ljusku.
Štoviše, ovo također pokreće vaš program prije nego što se Pi-ov sustav X-Windows pokrene, što znači da se vaš program pokreće i prije nego što se prijavite u sustav. U slučaju da želite da se skripta pokrene prije nego što se prijavite na Raspberry Pi, to vam to omogućuje.
Gornji retci koda rade za programe koji nisu GUI. Međutim, ako želite pokrenuti GUI program pomoću systemd, u datoteku usluge dodajte sljedeći kod:
[Jedinica]
Opis = PiCounter
Nakon = mreža.cilj
[Servis]
Okoliš = Prikaz =: 0
Okoliš = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restart = uvijek
[Instalirati]
WantedBy = višekorisnički.cilj
U gore navedenom paru smjernica-vrijednost, sve što trebate promijeniti je vrijednost za ExecStart direktiva. Zamijenite onaj u bloku koda s programom koji želite pokrenuti pri pokretanju. Nakon što popunite datoteku usluge, pritisnite CTRL + O da ga spasim.
Testirajte uslugu
Kad je usluga spremna, ručno provjerite radi li. Za to upišite sljedeću naredbu u terminal: sudo systemctl start display.service. Usluga bi trebala uspješno izvršavati vaše upute.
Jednom kad prestane, prekinite ga sa sudo systemctl zaustaviti prikaz.usluga.
Omogućite uslugu
Ako ste uspjeli pokrenuti svoj program koristeći uslugu, vrijeme je da ga omogućite tako da automatski izvršava vaš program svaki put kad pokrenete Raspberry Pi.
Da biste to učinili, upišite sudo systemctl omogući prikaz.usluga u prozoru terminala. A kad to završite, uđite sudo ponovno pokretanje da biste ponovno pokrenuli svoj Pi.
Nakon što se Raspberry Pi pokrene, systemd bi trebao pokrenuti vaš program prema uputama.
Automatiziranje pokretanja programa pri pokretanju na Raspberry Pi
Kao i većina Linux sustava, i Raspberry Pi OS omogućuje vam izvršavanje operacija na nekoliko načina, a ostaje zavjeren i zakazivanju pokretanja programa. Dakle, ako želite pokrenuti GUI programe / skripte pri pokretanju i želite bolju kontrolu nad svojim raspoređivanjem, systemd je očito bolja metoda.
Međutim, ako želite jednostavnije rješenje ili zahtjevi vašeg projekta zahtijevaju određeno raspoređivanje, možete pogledati naš vodič za Pokretanje programa ili skripte Raspberry Pi pri pokretanju naučiti više.
Želite li dobiti više od svoje Raspberry Pi? Evo hrpe korisnih naredbi za navigaciju Pi-ovim terminalom i programiranje njegovih GPIO pinova.
Pročitajte Dalje
- Uradi sam
- Raspberry Pi
Yash je pisac osoblja u MUO-u za "uradi sam", Linux, programiranje i sigurnost. Prije nego što je svoju strast pronašao u pisanju, razvijao se za web i iOS. Također možete pronaći njegovo pisanje na TechPP-u, gdje pokriva druge vertikale. Osim tehnologije, on voli razgovarati o astronomiji, Formuli 1 i satovima.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.