Raspberry Pi er en stærk SBC (enkelt bordcomputer), som du kan bruge til forskellige applikationer og projekter. Dens alsidighed ligger i dets evne til at køre alle slags programmer, herunder brugerdefinerede scripts, delvis takket være Raspberry Pi OS og andre Linux-baserede operativsystemer, den kører.
At køre et script eller program på Raspberry Pi er så simpelt som at finde det på systemet og udføre det. Men hvad nu hvis du vil automatisere denne proces, måske fordi dit projekt kræver det, eller fordi du vil strømline din arbejdsgang?
Et svar på dette er at lære at bruge systemd.
Hvad er Systemd?
systemd er en række systemkomponenter til servicekonfiguration og opførsel på moderne Linux-systemer. Det er identificeret med en PID (procesidentifikator) af 1, da det er den første proces, der starter op ved systemstart. I det store og hele er systemds formål at hjælpe dig med at administrere og udføre programmer ved systemstart. Og det er det, du vil udnytte for at starte dit program ved opstart på Pi.
Som nævnt oprindeligt er der flere metoder til at køre programmer ved opstart på Linux-systemer, såsom rc.local, cron og autostart. Systemd sker dog med en bedre løsning af partiet, hvis du vil starte GUI-programmer (grafisk brugergrænseflade), automatiser applikationer til at køre, efter at visse systemprocesser starter, eller kør programmer igen og igen indtil din planlægning arbejder.
Relaterede: Sådan planlægger du opgaver i Linux med Cron og Crontab
Sådan bruges systemd til at starte programmer ved opstart
systemd er en lidt mere kompliceret metode til at starte programmer ved opstart på Linux-systemer. Planlægningsfleksibiliteten, som den tilbyder over andre metoder - dem, vi har nævnt ovenfor - opvejer dog fuldstændig dens kompleksitet i alle aspekter.
Systemd-metoden bruger enhedsfiler, som ligner .ini-filer, der indeholder kodningsoplysninger om enheder, tjenester, stikkontakter, opstartsmål og andre vigtige systemkomponenter.
Enhedsfiler er af forskellige typer. Så baseret på hvilken type ressource, du vil erklære, skal du vælge en enhedsfiltype i overensstemmelse hermed. I forbindelse med denne guide holder vi os dog til .serviceenhedsfiler, som giver dig mulighed for at styre opstartsadfærden for programmer og scripts på systemet.
Nedenfor er en oversigt over de trin, der er involveret i lanceringen af et script / program ved opstart ved hjælp af systemd.
Oprettelse af en tjeneste
For at indstille dit program til at køre ved opstart skal du oprette en serviceenhedsfil, der fortæller systemd hvilket program der skal køres og hvornår. Sådan gør du det.
- Skriv CLI-vinduet sudo nano /lib/systemd/system/display.service. Du kan bruge ethvert navn til din tjeneste, så længe det ender med udvidelsen .service.
- Indsæt følgende kodelinjer i servicefilen:
[Enhed]
Beskrivelse = PiCounter
Efter = netværk. Mål
[Service]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Genstart = altid
Bruger = pi
[Installere]
WantedBy = multi-user.target
Alle dine almindelige konfigurationsmuligheder falder ind under Enhed og Installere sektioner, mens de servicespecifikke konfigurationsindstillinger går under sektionen Service.
Et par af ovennævnte direktiv-værdipar, som du muligvis skal ændre, inkluderer:
jeg. Efter: Det bestemmer, hvornår tjenesten skal startes. Indstiller den til netværk. mål sikrer, at den anførte værdi - netværksmål i dette tilfælde - starter, før den aktuelle enhed startes. Det styrer imidlertid ikke et afhængighedsforhold, som tjenesten skal udløse; det sker gennem andre direktiver, såsom Wants, Requires og WantedBy.
Selvfølgelig kan du ændre denne værdi, så den passer til dine projektkrav. For eksempel, hvis du vil have dit program til at køre, når din Raspberry Pi opretter forbindelse til et netværk, kan du bruge netværk-online.target værdi. Du kan henvise til Fedoras dokumentation om systemd for at lære mere om disse værdier.
ii. ExecStart: Det indeholder den absolutte sti og det program / scriptnavn, som du vil udføre ved opstart. Så afhængigt af hvad du vil udføre, skal du tilføje værdier til begge disse direktiver.
iii. Bruger: Det identificerer navnet på din Raspberry Pi. Hvis du har ændret din Pi's navn, skal du sætte den værdi for brugeren.
iv. WantedBy: Det er den mest almindelige måde at specificere udløseren for en enhed på. Ved at indstille det til multi-user.target, kan du oprette et afhængighedsforhold, der kører programmet, når systemkontrollen afleveres til flerbruger-shell.
Desuden kører dette også dit program, før Pi's X-Windows-system starter, hvilket betyder, at dit program kører, selv før du logger på systemet. Hvis du vil have et script til at køre, før du logger ind på din Raspberry Pi, gør det dig i stand til at gøre det.
Ovenstående kodelinjer fungerer for ikke-GUI-programmer. Men hvis du vil køre et GUI-program ved hjælp af systemd, skal du tilføje følgende kode til din servicefil:
[Enhed]
Beskrivelse = PiCounter
Efter = netværk. Mål
[Service]
Miljø = Display =: 0
Miljø = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Genstart = altid
[Installere]
WantedBy = multi-user.target
I ovenstående direktiv-værdi-par er alt, hvad du skal ændre, værdien for ExecStart direktiv. Udskift den i kodeblok med det program, du vil køre ved opstart. Når du har udfyldt servicefilen, skal du trykke på CTRL + O for at gemme det.
Test servicen
Når tjenesten er klar, skal du manuelt kontrollere, om den fungerer. Til dette skal du skrive følgende kommando i terminalen: sudo systemctl start display.service. Tjenesten skal udføre dine instruktioner med succes.
Når det er tilfældet, skal du afslutte det med sudo systemctl stop display.service.
Aktivér tjenesten
Hvis det lykkedes dig at køre dit program med succes ved hjælp af tjenesten, er det tid til at aktivere det, så det automatisk udfører dit program hver gang du starter din Raspberry Pi.
For at gøre dette skal du skrive sudo systemctl aktiver display.service i terminalvinduet. Og når det er gjort, skal du gå ind sudo genstart for at genstarte din Pi.
Når din Raspberry Pi starter op, skal systemd køre dit program i henhold til dine angivne instruktioner.
Automatisering af programstart ved opstart på Raspberry Pi
Som de fleste Linux-systemer giver Raspberry Pi OS dig også mulighed for at udføre operationer på flere måder, og det forbliver også sandt at planlægge programstart. Så hvis du vil starte GUI-programmer / scripts ved opstart og ønsker bedre kontrol over din planlægning, er systemd helt klart en bedre metode.
Når det er sagt, kan du dog se vores guide til, hvis du vil have en enklere løsning, eller dine projektkrav kræver specifik planlægning Kører et Raspberry Pi-program eller script ved opstart for at lære mere.
Vil du få mere ud af din Raspberry Pi? Her er masser af nyttige kommandoer til at navigere i Pi-terminalen og programmere dens GPIO-ben.
Læs Næste
- gør det selv
- Hindbær Pi
Yash er en Staff Writer hos MUO til DIY, Linux, programmering og sikkerhed. Før han fandt sin lidenskab skriftligt, plejede han at udvikle sig til internettet og iOS. Du kan også finde hans skrivning på TechPP, hvor han dækker andre vertikaler. Bortset fra teknologi kan han godt lide at tale om astronomi, Formel 1 og ure.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Et trin mere !!!
Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.