Raspberry Pi je výkonný SBC (jednodeskový počítač), který můžete použít pro různé aplikace a projekty. Jeho univerzálnost spočívá v jeho schopnosti spouštět všechny druhy programů, včetně vlastních skriptů, částečně díky Raspberry Pi OS a dalším operačním systémům založeným na Linuxu, které provozuje.

Spuštění skriptu nebo programu na Raspberry Pi je stejně snadné jako jeho nalezení v systému a jeho spuštění. Ale co když chcete tento proces automatizovat, možná proto, že to váš projekt vyžaduje, nebo proto, že chcete zefektivnit svůj pracovní postup?

Jednou z odpovědí je naučit se používat systemd.

Co je Systemd?

systemd je sada systémových komponent pro konfiguraci a chování služeb v moderních systémech Linux. Je identifikován s PID (identifikátor procesu) z 1, protože se jedná o první proces, který se spustí při spuštění systému. Účelem systému systemd je pomoci vám se správou a spouštěním programů při spuštění systému. A to je to, co budete využívat ke spuštění svého programu při spuštění na Pi.

instagram viewer

Jak bylo zmíněno na začátku, existuje několik způsobů spouštění programů při spuštění v systémech Linux, například rc.local, cron a autostart. Systemd se však stane lepším řešením šarže, pokud chcete spouštět programy GUI (grafické uživatelské rozhraní), automatizujte aplikace tak, aby se spouštěly po zahájení určitých systémových procesů, nebo spusťte programy znovu a znovu, dokud nedojde k naplánování funguje.

Příbuzný: Jak naplánovat úkoly v Linuxu pomocí Cron a Crontab

Jak používat systemd k spouštění programů při spuštění

systemd je mírně komplikovanější metoda spouštění programů při spuštění v systémech Linux. Flexibilita plánování, kterou nabízí oproti jiným metodám - těm, které jsme zmínili výše - však v každém ohledu zcela převažuje nad jeho složitostí.

Metoda systemd používá jednotkové soubory, které jsou podobné souborům INI, které obsahují informace o kódování zařízení, služeb, soketů, spouštěcího cíle a dalších základních systémových komponent.

Soubory jednotek jsou různých typů. Takže na základě toho, jaký druh zdroje chcete deklarovat, musíte odpovídajícím způsobem zvolit typ souboru jednotky. Pro účely této příručky se však budeme držet souborů jednotek .service, které vám umožní spravovat spouštěcí chování programů a skriptů v systému.

Níže je uveden rozpis kroků spojených se spuštěním skriptu / programu při spuštění pomocí systemd.

Vytvoření služby

Chcete-li nastavit spuštění programu při spuštění, vytvořte soubor servisní jednotky, který systému sdělí, který program se má spustit a kdy. Zde je návod, jak na to.

  1. V okně CLI zadejte sudo nano /lib/systemd/system/display.service. Pro svou službu můžete použít libovolný název, pokud končí příponou .service.
  2. V souboru služby vložte následující řádky kódu:
    [Jednotka]
    Popis = PiCounter
    After = network.target
    [Servis]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Restartovat = vždy
    Uživatel = pi
    [Nainstalujte]
    WantedBy = multi-user.target

Všechny vaše běžné možnosti konfigurace spadají pod Jednotka a Nainstalujte sekce, zatímco možnosti konfigurace specifické pro službu jdou do sekce Služba.

Několik výše uvedených párů direktiva-hodnota, které možná budete muset upravit, zahrnuje:

i. Po: Určuje, kdy se má služba spustit. Nastavení na network.target zajišťuje, že uvedená hodnota - v tomto případě network.target - začíná před začátkem aktuální jednotky. Neřídí však vztah závislosti, který má služba spustit; to se děje prostřednictvím jiných směrnic, jako jsou požadavky, požadavky a WantedBy.

Tuto hodnotu můžete samozřejmě změnit tak, aby vyhovovala vašim projektovým požadavkům. Například pokud chcete, aby se váš program spustil po připojení vašeho Raspberry Pi k síti, můžete použít network-online.target hodnota. Můžete se odvolat na Dokumentace Fedory na systemd dozvědět se více o těchto hodnotách.

ii. Spustit: Obsahuje absolutní cestu a název programu / skriptu, který chcete spustit při spuštění. Takže v závislosti na tom, co chcete provést, musíte přidat hodnoty pro obě tyto směrnice.

iii. Uživatel: Identifikuje název vašeho Raspberry Pi. Pokud jste změnili název svého Pi, musíte tuto hodnotu uvést pro uživatele.

iv. WantedBy: Jedná se o nejběžnější způsob určení spouštěče pro jednotku. Nastavením na cíl pro více uživatelů, můžete vytvořit závislostní vztah, který spustí program, když je řízení systému předáno víceuživatelskému prostředí.

Kromě toho to také spustí váš program před spuštěním systému Pi-X-Windows, což znamená, že váš program bude spuštěn ještě před přihlášením do systému. V případě, že chcete, aby se před přihlášením ke svému Raspberry Pi spustil skript, můžete tak učinit.

Výše uvedené řádky kódu fungují pro programy bez grafického uživatelského rozhraní. Pokud však chcete spustit program GUI pomocí systemd, měli byste do svého souboru služeb přidat následující kód:

[Jednotka]
Popis = PiCounter
After = network.target
[Servis]
Prostředí = displej =: 0
Prostředí = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restartovat = vždy
[Nainstalujte]
WantedBy = multi-user.target

Ve výše uvedeném páru směrnice - hodnota musíte změnit pouze hodnotu pro Spustit směrnice. Nahraďte ten v codeblocku programem, který chcete spustit při spuštění. Po naplnění souboru služby stiskněte CTRL + O zachránit to.

Vyzkoušejte službu

Když je služba připravena, ručně ověřte, zda funguje. Za tímto účelem zadejte do terminálu následující příkaz: sudo systemctl start display.service. Služba by měla úspěšně provést vaše pokyny.

Jakmile to uděláte, ukončete to pomocí sudo systemctl stop display.service.

Povolte službu

Pokud se vám podařilo úspěšně spustit program pomocí služby, je čas jej povolit, aby se váš program spustil automaticky při každém spuštění vašeho Raspberry Pi.

Chcete-li to provést, zadejte sudo systemctl povolit display.service v okně terminálu. A jakmile je hotovo, zadejte sudo restart restartujte Pi.

Jakmile se vaše Raspberry Pi spustí, měl by systemd spustit váš program podle vašich poskytnutých pokynů.

Automatické spuštění programu při spuštění na Raspberry Pi

Stejně jako většina systémů Linux, Raspberry Pi OS vám také umožňuje provádět operace několika způsoby a zůstává věrný i při spuštění programu. Pokud tedy chcete spouštět programy / skripty GUI při spuštění a chcete lepší kontrolu nad plánováním, je systemd jednoznačně lepší metodou.

To znamená, že pokud chcete jednodušší řešení nebo pokud vaše požadavky na projekt vyžadují konkrétní plánování, můžete si prohlédnout náš průvodce Spuštění programu nebo skriptu Raspberry Pi při spuštění dozvědět se více.

E-mailem
The Ultimate Raspberry Pi Commands Cheat Sheet

Chcete ze svého Raspberry Pi získat více? Zde je spousta užitečných příkazů pro navigaci terminálu Pi a programování jeho pinů GPIO.

Přečtěte si další

Související témata
  • DIY
  • Raspberry Pi
O autorovi
Yash Wate (8 článků publikováno)

Yash je spisovatel na MUO pro kutily, Linux, programování a zabezpečení. Než našel vášeň pro psaní, vyvíjel pro web a iOS. Jeho psaní najdete také na TechPP, kde pokrývá další vertikály. Kromě techniky rád hovoří o astronomii, formuli 1 a hodinkách.

Více od Yash Wate

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!

Ještě jeden krok…!

V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.

.