Raspberry Pi je výkonný SBC (jednodeskový počítač), ktorý môžete použiť na rôzne aplikácie a projekty. Jeho všestrannosť spočíva v schopnosti spúšťať všetky druhy programov vrátane vlastných skriptov, čiastočne vďaka Raspberry Pi OS a iným operačným systémom založeným na systéme Linux, ktoré prevádzkuje.

Spustenie skriptu alebo programu na Raspberry Pi je také jednoduché, ako ich vyhľadanie v systéme a vykonanie. Čo však v prípade, že chcete tento proces automatizovať, možno preto, lebo to vyžaduje váš projekt, alebo preto, že chcete zjednodušiť svoj pracovný tok?

Jednou z odpovedí je naučiť sa používať systemd.

Čo je Systemd?

systemd je sada systémových komponentov pre konfiguráciu a správanie služieb v moderných systémoch Linux. Je identifikovaný s PID (identifikátor procesu) z 1, pretože je to prvý proces, ktorý sa bootuje pri štarte systému. Účelom systemd je všeobecne pomôcť vám so správou a vykonávaním programov pri štarte systému. A to budete využívať na spustenie programu pri štarte na Pi.

instagram viewer

Ako bolo spomenuté na začiatku, existuje niekoľko spôsobov spustenia programov pri štarte v systémoch Linux, napríklad rc.local, cron a autostart. Systemd sa však stane lepším riešením šarže, ak chcete spustiť programy GUI (grafické používateľské rozhranie), automatizujte aplikácie tak, aby sa spúšťali po začiatku určitých systémových procesov, alebo spúšťajte programy znova a znova, až kým nenaplánujete svoje plánovanie Tvorba.

Súvisiace: Ako plánovať úlohy v systéme Linux pomocou programov Cron a Crontab

Ako používať systemd na spustenie programov pri štarte

systemd je trochu komplikovanejšia metóda spúšťania programov pri štarte v systémoch Linux. Flexibilita plánovania, ktorú ponúka v porovnaní s inými metódami - tými, ktoré sme spomenuli vyššie - však v každom ohľade úplne prevyšuje ich zložitosť.

Metóda systemd používa jednotkové súbory, ktoré sú podobné súborom .ini, ktoré obsahujú kódovacie informácie o zariadeniach, službách, soketoch, cieľovom mieste spustenia a ďalších základných systémových komponentoch.

Súbory jednotiek sú rôznych typov. Takže na základe toho, aký druh zdroja chcete deklarovať, musíte zodpovedajúcim spôsobom zvoliť typ jednotkového súboru. Na účely tejto príručky sa však budeme držať súborov jednotiek .service, ktoré vám umožňujú spravovať spúšťacie správanie programov a skriptov v systéme.

Ďalej uvádzame rozpis krokov potrebných na spustenie skriptu / programu pri štarte pomocou systemd.

Vytvorenie služby

Ak chcete nastaviť spustenie programu pri štarte, vytvorte súbor obslužnej jednotky, ktorý systému systemd povie, ktorý program sa má kedy spustiť. Tu je postup, ako na to.

  1. V okne CLI zadajte sudo nano /lib/systemd/system/display.service. Pre svoju službu môžete použiť ľubovoľný názov, pokiaľ sa končí príponou .service.
  2. Do súboru služby vložte nasledujúce riadky kódu:
    [Jednotka]
    Popis = PiCounter
    After = network.target
    [Služba]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Reštart = vždy
    Užívateľ = pi
    [Inštalácia]
    WantedBy = multi-user.target

Všetky vaše bežné možnosti konfigurácie spadajú pod Jednotka a Inštalácia sekcie, zatiaľ čo možnosti konfigurácie špecifické pre službu prechádzajú do sekcie Služba.

Niektoré z vyššie uvedených párov smernica - hodnota, ktoré možno budete musieť upraviť, zahŕňajú:

i. Po: Určuje, kedy sa má služba spustiť. Nastavuje sa na sieť.cieľ zaisťuje, aby uvedená hodnota - v tomto prípade network.target - začala pred začiatkom aktuálnej jednotky. Nesmeruje to však vzťah závislosti, ktorý má služba spustiť; to sa deje prostredníctvom iných smerníc, ako sú napríklad požiadavky, požiadavky a WantedBy.

Túto hodnotu môžete samozrejme zmeniť tak, aby vyhovovala vašim požiadavkám na projekt. Napríklad, ak chcete, aby sa váš program spustil po pripojení vašej Raspberry Pi k sieti, môžete použiť network-online.target hodnotu. Môžete sa odvolať na Dokumentácia Fedory na systéme systemd dozvedieť sa viac o týchto hodnotách.

ii. ExecStart: Obsahuje absolútnu cestu a názov programu / skriptu, ktorý chcete vykonať pri štarte. Takže v závislosti na tom, čo chcete vykonať, musíte pridať hodnoty pre obe tieto smernice.

iii. Užívateľ: Identifikuje názov vášho Raspberry Pi. Ak ste zmenili meno svojho čísla Pi, musíte túto hodnotu uviesť pre používateľa.

iv. WantedBy: Je to najbežnejší spôsob určenia spúšťača pre jednotku. Nastavením na multi-user.target, môžete vytvoriť vzťah závislostí, ktorý spustí program, keď sa riadenie systému odovzdá do shellu pre viacerých používateľov.

Týmto sa navyše spustí váš program ešte pred spustením systému Pi-X-Windows, čo znamená, že váš program sa spustí ešte pred prihlásením do systému. Ak chcete, aby sa pred prihlásením do vášho Raspberry Pi spustil skript, môžete tak urobiť.

Vyššie uvedené riadky kódu fungujú pre programy bez GUI. Ak však chcete spustiť program GUI pomocou systemd, mali by ste do svojho servisného súboru pridať nasledujúci kód:

[Jednotka]
Popis = PiCounter
After = network.target
[Služba]
Prostredie = Displej =: 0
Prostredie = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Reštart = vždy
[Inštalácia]
WantedBy = multi-user.target

Vo vyššie uvedenom páre smernica - hodnota musíte zmeniť iba hodnotu pre ExecStart smernice. Nahraďte ten v kódovom bloku programom, ktorý chcete spustiť pri štarte. Po vyplnení súboru služby stlačte CTRL + O aby som to zachránil.

Vyskúšajte službu

Keď je služba pripravená, ručne overte, či funguje. Za týmto účelom zadajte do terminálu nasledujúci príkaz: sudo systemctl start display.service. Služba by mala úspešne vykonať vaše pokyny.

Akonáhle to urobíte, ukončite to s sudo systemctl stop display.service.

Povoliť službu

Ak sa vám podarilo úspešne spustiť program pomocou tejto služby, je čas ho povoliť, aby sa program spustil automaticky pri každom štarte vášho Raspberry Pi.

Za týmto účelom napíšte sudo systemctl povoliť display.service v okne terminálu. A keď je to hotové, vstúpte sudo reštart reštartovať Pi.

Akonáhle sa váš Raspberry Pi naštartuje, mal by systemd spustiť váš program podľa vašich poskytnutých pokynov.

Automatické spustenie programu pri štarte na Raspberry Pi

Rovnako ako väčšina systémov Linux, aj Raspberry Pi OS vám umožňuje vykonávať operácie niekoľkými spôsobmi a zostáva v platnosti aj pri plánovaní spustenia programu. Takže ak chcete spúšťať programy / skripty GUI pri štarte a chcete mať lepšiu kontrolu nad svojim plánovaním, systemd je jednoznačne lepšia metóda.

To znamená, že ak chcete jednoduchšie riešenie alebo si vaše požiadavky na projekt vyžadujú konkrétne plánovanie, môžete si pozrieť nášho sprievodcu Spustenie programu alebo skriptu Raspberry Pi pri štarte naučiť sa viac.

Email
The Ultimate Raspberry Pi Commands Cheat Sheet

Chcete zo svojho Raspberry Pi získať viac? Tu je veľa užitočných príkazov na navigáciu v termináli Pi a programovanie jeho pinov GPIO.

Prečítajte si Ďalej

Súvisiace témy
  • DIY
  • Malinový koláč
O autorovi
Yash Wate (Publikovaných 8 článkov)

Yash je redaktorom štábu na MUO pre oblasť domácich majstrov, Linuxu, programovania a bezpečnosti. Predtým, ako našiel svoju vášeň v písaní, používal vývoj pre web a iOS. Jeho písanie nájdete aj na TechPP, kde pokrýva ďalšie vertikály. Okrem techniky sa rád venuje astronómii, formule 1 a hodinkám.

Viac od Yash Wate

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.