Raspberry Pi ir spēcīgs SBC (viena borta dators), kuru varat izmantot dažādām lietojumprogrammām un projektiem. Tās daudzpusība ir saistīta ar spēju palaist visu veidu programmas, ieskaitot pielāgotos skriptus, daļēji pateicoties Raspberry Pi OS un citām operētājsistēmām, kuru pamatā ir Linux.

Skripta vai programmas palaišana Raspberry Pi ir tikpat vienkārša kā tā atrašana sistēmā un izpildīšana. Bet ko tad, ja vēlaties automatizēt šo procesu, iespējams, tāpēc, ka tas ir vajadzīgs jūsu projektam vai tāpēc, ka vēlaties racionalizēt savu darbplūsmu?

Viena atbilde uz to ir iemācīties izmantot systemd.

Kas ir Systemd?

systemd ir sistēmas komponentu komplekts pakalpojumu konfigurēšanai un uzvedībai mūsdienu Linux sistēmās. Tas tiek identificēts ar PID (procesa identifikators) no 1, jo tas ir pirmais process, kas tiek palaists sistēmas startēšanas laikā. Sistēmas mērķis kopumā ir palīdzēt jums pārvaldīt un izpildīt programmas, startējot sistēmu. Un tas ir tas, ko jūs izmantosiet, lai palaistu programmu, startējot Pi.

instagram viewer

Kā minēts sākotnēji, ir vairākas metodes, kā palaist programmas startēšanas laikā Linux sistēmās, piemēram, rc.local, cron un autostart. Tomēr systemd notiek ar labāku partijas risinājumu, ja vēlaties palaist GUI (grafiskā lietotāja saskarne) programmas, automatizēt lietojumprogrammas, lai tās darbotos pēc noteiktu sistēmas procesu sākuma, vai palaist programmas atkal un atkal līdz jūsu plānošanai darbojas.

Saistīts: Kā ieplānot uzdevumus Linux ar Cron un Crontab

Kā lietot systemd, lai palaistu programmas startēšanas laikā

systemd ir nedaudz sarežģītāka metode programmu palaišanai, startējot Linux sistēmās. Tomēr plānošanas elastība, ko tā piedāvā salīdzinājumā ar citām metodēm - tām, kuras mēs jau pieminējām, pilnīgi atsver tās sarežģītību visos aspektos.

Metode systemd izmanto vienības failus, kas ir līdzīgi .ini failiem, kuros glabājas kodēšanas informācija par ierīcēm, pakalpojumiem, kontaktligzdām, sākuma mērķiem un citiem būtiskiem sistēmas komponentiem.

Vienību faili ir dažāda veida. Tātad, pamatojoties uz to, kāda veida resursu vēlaties deklarēt, jums atbilstoši jāizvēlas vienības faila tips. Šīs rokasgrāmatas vajadzībām mēs tomēr paliksim pie .service vienības failiem, kas ļauj jums pārvaldīt programmu un skriptu startēšanas darbību sistēmā.

Zemāk ir sniegumu sadalījums, kas saistīti ar skripta / programmas palaišanu, startējot, izmantojot systemd.

Pakalpojuma izveide

Lai iestatītu programmas palaišanu startēšanas laikā, izveidojiet servisa vienības failu, kas systemd pateiks, kuru programmu un kad palaist. Lūk, kā to izdarīt.

  1. CLI logā ierakstiet sudo nano /lib/systemd/system/display.service. Pakalpojumam varat izmantot jebkuru nosaukumu, ja vien tas beidzas ar paplašinājumu .service.
  2. Pakalpojuma failā ielīmējiet šādas koda rindas:
    [Vienība]
    Apraksts = PiCounter
    Pēc = tīkls.mērķis
    [Apkalpošana]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Restartēt = vienmēr
    Lietotājs = pi
    [Uzstādīt]
    WantedBy = daudzlietotāju.mērķis

Visas jūsu kopējās konfigurācijas opcijas ietilpst Vienība un Uzstādīt sadaļām, savukārt pakalpojumam specifiskās konfigurācijas opcijas atrodas sadaļā Pakalpojums.

Daži no iepriekš minētajiem direktīvas vērtību pāriem, kas jums var būt jāmaina, ir šādi:

i. Pēc: Tas nosaka, kad sākt pakalpojumu. Nosakot to uz tīkls.mērķis nodrošina, ka uzskaitītā vērtība - šajā gadījumā network.target - sākas pirms pašreizējās vienības sākšanas. Tomēr tas nenorāda uz pakalpojuma atkarības attiecībām; tas tiek darīts, izmantojot citas direktīvas, piemēram, Wants, Requires un WantedBy.

Protams, jūs varat mainīt šo vērtību, lai tā atbilstu jūsu projekta prasībām. Piemēram, ja vēlaties, lai jūsu programma tiktu izpildīta pēc tam, kad jūsu Raspberry Pi ir izveidojis savienojumu ar tīklu, varat izmantot network-online.target vērtība. Jūs varat atsaukties uz Fedora dokumentācija par systemd lai uzzinātu vairāk par šīm vērtībām.

ii. ExecStart: Tajā ir absolūtais ceļš un programmas / skripta nosaukums, kuru vēlaties izpildīt startēšanas laikā. Tātad, atkarībā no tā, ko vēlaties izpildīt, jums jāpievieno vērtības abām šīm direktīvām.

iii. Lietotājs: Tas identificē jūsu Raspberry Pi nosaukumu. Ja esat mainījis savu Pi vārdu, šī vērtība ir jānorāda lietotājam.

iv. WantedBy: Tas ir visizplatītākais veids, kā norādīt vienības trigeri. Nosakot to uz daudzlietotāju.mērķis, varat izveidot atkarības attiecības, kas palaidīs programmu, kad sistēmas vadība tiek nodota daudzlietotāju čaulai.

Turklāt tas arī palaiž jūsu programmu pirms Pika X-Windows sistēmas palaišanas, kas nozīmē, ka jūsu programma darbojas pat pirms pieteikšanās sistēmā. Ja vēlaties, lai skripts tiktu palaists pirms pieteikšanās savā Raspberry Pi, tas jums to ļaus.

Iepriekš minētās koda rindas darbojas programmām, kas nav GUI. Tomēr, ja vēlaties palaist GUI programmu, izmantojot systemd, pakalpojuma failā jāpievieno šāds kods:

[Vienība]
Apraksts = PiCounter
Pēc = tīkls.mērķis
[Apkalpošana]
Vide = Displejs =: 0
Vide = XAUTHORITY / home / pi / .Autorizācija
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restartēt = vienmēr
[Uzstādīt]
WantedBy = daudzlietotāju.mērķis

Iepriekš minētajā direktīvas un vērtību pārī viss, kas jums jāmaina, ir vērtība ExecStart direktīvu. Nomainiet kodu bloķētajā ar programmu, kuru vēlaties palaist startēšanas laikā. Kad esat aizpildījis pakalpojuma failu, nospiediet CTRL + O lai to saglabātu.

Pārbaudiet pakalpojumu

Kad pakalpojums ir gatavs, manuāli pārbaudiet, vai tas darbojas. Lai to izdarītu, terminālā ierakstiet šādu komandu: sudo systemctl sākt display.service. Pakalpojumam vajadzētu veiksmīgi izpildīt jūsu norādījumus.

Kad tas notiks, pārtrauciet to ar sudo systemctl stop display.service.

Iespējot pakalpojumu

Ja jums izdevās veiksmīgi palaist programmu, izmantojot pakalpojumu, ir pienācis laiks to iespējot, lai tā automātiski izpildītu jūsu programmu katru reizi, kad palaižat Raspberry Pi.

Lai to izdarītu, ierakstiet sudo systemctl iespējot display.service termināļa logā. Un, kad tas ir izdarīts, ievadiet sudo atsāknēšana lai restartētu Pi.

Kad jūsu Raspberry Pi ir palaists, sistēmai vajadzētu palaist jūsu programmu atbilstoši norādītajām instrukcijām.

Programmas palaišanas automatizēšana, startējot Raspberry Pi

Tāpat kā lielākā daļa Linux sistēmu, arī Raspberry Pi OS ļauj veikt operācijas vairākos veidos, un tas attiecas arī uz programmu palaišanas plānošanu. Tātad, ja vēlaties palaist GUI programmas / skriptus startēšanas laikā un vēlaties labāk kontrolēt plānošanu, systemd ir acīmredzami labāka metode.

Tomēr, ja vēlaties vienkāršāku risinājumu vai jūsu projekta prasības prasa īpašu plānošanu, varat iepazīties ar mūsu ceļvedi Raspberry Pi programmas vai skripta palaišana startēšanas laikā lai uzzinātu vairāk.

E-pasts
The Ultimate Raspberry Pi komandas apkrāptu lapa

Vai vēlaties iegūt vairāk no sava Raspberry Pi? Šeit ir daudz noderīgu komandu, lai pārvietotos Pi terminālā un ieprogrammētu tā GPIO tapas.

Lasiet Tālāk

Saistītās tēmas
  • DIY
  • Aveņu Pi
Par autoru
Jašs Vate (Publicēti 8 raksti)

Yash ir MUO personāla rakstnieks DIY, Linux, programmēšanai un drošībai. Pirms rakstīšanas aizraušanās viņš mēdza attīstīties tīmeklim un iOS. Viņa rakstu varat atrast arī vietnē TechPP, kur viņš aptver citas vertikāles. Izņemot tehniku, viņam patīk runāt par astronomiju, 1. formulu un skatīties.

Vairāk no Yash Wate

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!

Vēl viens solis !!!

Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.

.