„Raspberry Pi“ yra galingas SBC (vieno borto kompiuteris), kurį galite naudoti įvairioms programoms ir projektams. Jo universalumas slypi gebėjime paleisti visų rūšių programas, įskaitant pasirinktinius scenarijus, iš dalies dėl „Raspberry Pi OS“ ir kitų operacinių sistemų, pagrįstų „Linux“.
Vykdyti scenarijų ar programą „Raspberry Pi“ yra taip paprasta, kaip surasti jį sistemoje ir vykdyti. Bet ką daryti, jei norite automatizuoti šį procesą, galbūt dėl to, kad to reikalauja jūsų projektas, ar dėl to, kad norite supaprastinti savo darbo eigą?
Vienas iš atsakymų į tai yra išmokti naudotis systemd.
Kas yra „Systemd“?
„systemd“ yra sistemos komponentų rinkinys, skirtas paslaugų konfigūravimui ir veikimui šiuolaikinėse „Linux“ sistemose. Tai tapatinama su a PID (proceso identifikatorius) iš 1, nes tai yra pirmasis procesas, paleidžiamas paleidus sistemą. Apskritai, systemd tikslas yra padėti jums valdyti ir vykdyti programas paleidus sistemą. Štai ką jūs naudosite paleisdami savo programą paleidę „Pi“.
Kaip minėta iš pradžių, yra keli metodai, kaip paleisti programas paleidžiant „Linux“ sistemas, pavyzdžiui, rc.local, cron ir automatinis paleidimas. Tačiau „systemd“ atsitinka su geresniu partijos sprendimu, jei norite paleisti GUI (grafinės vartotojo sąsajos) programas, automatizuokite programas, kad jos veiktų prasidėjus tam tikriems sistemos procesams, arba paleiskite programas vėl ir vėl, kol planuojate veikia.
Susijęs: Kaip planuoti užduotis sistemoje „Linux“ naudojant „Cron“ ir „Crontab“
Kaip paleisti programas paleidžiant „systemd“
systemd yra šiek tiek sudėtingesnis programų paleidimo būdas paleidžiant „Linux“ sistemas. Tačiau jo siūlomas planavimo lankstumas, palyginti su kitais metodais - tais, kuriuos jau minėjome, visiškai atsveria jo sudėtingumą visais aspektais.
„Systemd“ metodas naudoja vieneto failus, kurie yra panašūs į .ini failus, kuriuose yra kodavimo informacija apie įrenginius, paslaugas, lizdus, paleidimo tikslą ir kitus būtinus sistemos komponentus.
Vieneto bylos yra įvairių tipų. Taigi, atsižvelgiant į tai, kokį šaltinį norite deklaruoti, turite atitinkamai pasirinkti vieneto failo tipą. Tačiau šiame vadove mes laikysimės .service vieneto failų, kurie leidžia jums valdyti programų ir scenarijų paleidimo elgseną sistemoje.
Žemiau pateikiamas žingsnių, susijusių su scenarijaus / programos paleidimu paleidimo metu naudojant „systemd“, suskirstymas.
Paslaugos kūrimas
Norėdami nustatyti, kad programa būtų paleista paleidimo metu, sukurkite paslaugų vieneto failą, kuris sistemai nurodys, kurią programą ir kada paleisti. Štai kaip tai padaryti.
- CLI lange įveskite sudo nano /lib/systemd/system/display.service. Savo tarnybai galite naudoti bet kokį vardą, jei jis baigiasi .service plėtiniu.
- Aptarnavimo faile įklijuokite šias kodo eilutes:
[Vienetas]
Aprašymas = PiCounter
Po = tinklas.tikslas
[Paslauga]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Paleisti iš naujo = visada
Vartotojas = pi
[Diegti]
WantedBy = daugiafunkcinis vartotojas
Visos jūsų bendros konfigūracijos parinktys patenka į Vienetas ir Diegti skyrius, o konkrečios paslaugos konfigūracijos parinktys pateikiamos skyriuje „Paslauga“.
Keletas iš aukščiau nurodytų direktyvos ir vertės porų, kurias gali tekti pakeisti, yra šie:
i. Po: Jis nustato, kada pradėti paslaugą. Nustačius jį į tinklas.tikslas užtikrina, kad išvardyta vertė - šiuo atveju network.target - prasidėtų prieš pradedant dabartinį vienetą. Tačiau tai nekreipia į priklausomybės ryšį, kad paslauga suaktyvėtų; tai daroma per kitas direktyvas, tokias kaip „Wants“, „Requires“ ir „WantedBy“.
Žinoma, galite pakeisti šią vertę, kad atitiktų jūsų projekto reikalavimus. Pvz., Jei norite, kad jūsų programa būtų vykdoma po to, kai „Raspberry Pi“ prisijungs prie tinklo, galite naudoti network-online.target vertė. Galite kreiptis į „Fedora“ dokumentai apie „systemd“ sužinoti daugiau apie šias vertybes.
ii. „ExecStart“: Jame yra absoliutus kelias ir programos / scenarijaus pavadinimas, kurį norite paleisti paleidus. Taigi, priklausomai nuo to, ką norite vykdyti, turite pridėti abiejų šių direktyvų vertes.
iii. Vartotojas: Tai identifikuoja jūsų „Raspberry Pi“ pavadinimą. Jei pakeitėte savo Pi vardą, turite nurodyti šią vertę vartotojui.
iv. Norimas: Tai yra labiausiai paplitęs būdas nurodyti vieneto paleidiklį. Nustačius jį į daugiabuseris.tikslinis, galite nustatyti priklausomybės ryšį, kuris vykdys programą, kai sistemos valdiklis bus perduotas daugelio vartotojų apvalkalui.
Be to, tai taip pat paleidžia jūsų programą prieš pradedant „Pi X-Windows“ sistemą, o tai reiškia, kad jūsų programa veikia dar prieš prisijungiant prie sistemos. Jei norite, kad scenarijus būtų paleistas prieš prisijungiant prie „Raspberry Pi“, tai jums tai padaryti.
Aukščiau nurodytos kodo eilutės veikia ne GUI programoms. Tačiau jei norite paleisti GUI programą naudodami „systemd“, turėtumėte pridėti šį kodą į savo paslaugų failą:
[Vienetas]
Aprašymas = PiCounter
Po = tinklas.tikslas
[Paslauga]
Aplinka = Ekranas =: 0
Aplinka = XAUTHORITY / home / pi / .Naudingumas
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Paleisti iš naujo = visada
[Diegti]
WantedBy = daugiafunkcinis vartotojas
Pirmiau pateiktoje direktyvos ir vertės poroje tereikia pakeisti reikšmę „ExecStart“ direktyvą. Kodų bloke esančią pakeiskite programa, kurią norite paleisti paleidus. Kai užpildysite paslaugos failą, paspauskite CTRL + O kad jį išsaugotum.
Išbandykite paslaugą
Kai paslauga paruošta, rankiniu būdu patikrinkite, ar ji veikia. Tam įveskite šią komandą terminale: sudo systemctl paleisti display.service. Tarnyba turėtų sėkmingai vykdyti jūsų nurodymus.
Kai tai padarys, nutraukite jį sudo systemctl sustabdyti display.service.
Įgalinti paslaugą
Jei pavyko sėkmingai paleisti programą naudojant paslaugą, atėjo laikas ją įgalinti, kad ji kiekvieną kartą paleidus „Raspberry Pi“ paleistų jūsų programą automatiškai.
Norėdami tai padaryti, įveskite sudo systemctl įjungti display.service terminalo lange. Kai tai bus padaryta, įveskite sudo iš naujo kad iš naujo paleistumėte savo Pi.
Kai jūsų „Raspberry Pi“ bus paleistas, „systemd“ turėtų paleisti jūsų programą pagal pateiktas instrukcijas.
Programos paleidimo automatizavimas paleidžiant „Raspberry Pi“
Kaip ir dauguma „Linux“ sistemų, „Raspberry Pi OS“ taip pat leidžia atlikti operacijas keliais būdais, ir tai išlieka tikra planuojant programos paleidimus. Taigi, jei norite paleisti GUI programas / scenarijus paleidimo metu ir norite geriau kontroliuoti savo planavimą, „systemd“ yra akivaizdžiai geresnis metodas.
Vis dėlto, jei norite paprastesnio sprendimo arba jei jūsų projekto reikalavimai reikalauja konkretaus planavimo, galite peržiūrėti mūsų vadovą „Raspberry Pi“ programos ar scenarijaus paleidimas paleidimo metu sužinoti daugiau.
Norite gauti daugiau iš savo „Raspberry Pi“? Čia yra daugybė naudingų komandų, leidžiančių naršyti „Pi“ terminale ir programuoti jo GPIO kaiščius.
Skaitykite toliau
- Pasidaryk pats
- Avietė Pi
Yashas yra MUO personalo rašytojas, skirtas „pasidaryk pats“, „Linux“, programavimui ir saugumui. Prieš rasdamas aistrą rašydamas, jis kūrė internetą ir „iOS“. Taip pat galite rasti jo raštą TechPP, kur jis apima kitas vertikales. Be technologijų, jam patinka kalbėti apie astronomiją, „Formulę 1“ ir žiūrėti.
Prenumeruokite mūsų naujienlaiškį
Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!
Dar vienas žingsnis…!
Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.