Raspberry Pi to potężny SBC (komputer jednopłytkowy), którego można używać do różnych aplikacji i projektów. Jego wszechstronność polega na możliwości uruchamiania wszelkiego rodzaju programów, w tym niestandardowych skryptów, częściowo dzięki systemowi Raspberry Pi i innym systemom operacyjnym opartym na Linuksie.
Uruchomienie skryptu lub programu na Raspberry Pi jest tak proste, jak znalezienie go w systemie i wykonanie. Ale co, jeśli chcesz zautomatyzować ten proces, być może dlatego, że wymaga tego Twój projekt lub chcesz usprawnić przepływ pracy?
Jedną z odpowiedzi na to jest nauczenie się, jak używać systemd.
Co to jest Systemd?
systemd to zestaw komponentów systemowych do konfiguracji i zachowania usług w nowoczesnych systemach Linux. Jest utożsamiany z PID (identyfikator procesu) 1, ponieważ jest to pierwszy proces uruchamiany podczas uruchamiania systemu. Zasadniczo celem systemd jest pomoc w zarządzaniu i wykonywaniu programów podczas uruchamiania systemu. I to właśnie będziesz wykorzystać, aby uruchomić swój program podczas uruchamiania na Pi.
Jak wspomniano na początku, istnieje kilka metod uruchamiania programów podczas uruchamiania w systemach Linux, na przykład rc.local, cron i autostart. Jednak systemd zdarza się lepszym rozwiązaniem partii, jeśli chcesz uruchamiać programy GUI (graficzny interfejs użytkownika), automatyzuj uruchamianie aplikacji po rozpoczęciu określonych procesów systemowych lub uruchamiaj programy w kółko, aż do zaplanowania Pracuje.
Związane z: Jak planować zadania w systemie Linux za pomocą Cron i Crontab
Jak używać systemd do uruchamiania programów podczas uruchamiania
systemd to nieco bardziej skomplikowana metoda uruchamiania programów podczas uruchamiania w systemach Linux. Jednak elastyczność planowania, którą oferuje w porównaniu z innymi metodami - tymi, o których wspomnieliśmy powyżej - całkowicie przewyższa jej złożoność pod każdym względem.
Metoda systemd wykorzystuje pliki jednostkowe, które są czymś w rodzaju plików .ini, które przechowują informacje o kodowaniu o urządzeniach, usługach, gniazdach, celu uruchomienia i innych istotnych komponentach systemu.
Pliki jednostek są różnych typów. Tak więc, w oparciu o rodzaj zasobu, który chcesz zadeklarować, musisz odpowiednio wybrać typ pliku jednostkowego. Jednak na potrzeby tego przewodnika będziemy trzymać się plików jednostek usług .service, które umożliwiają zarządzanie zachowaniem uruchamiania programów i skryptów w systemie.
Poniżej znajduje się zestawienie czynności związanych z uruchomieniem skryptu / programu podczas uruchamiania przy użyciu systemd.
Tworzenie usługi
Aby ustawić program do uruchamiania podczas uruchamiania, utwórz plik jednostki usługowej, który powie systemd, który program ma zostać uruchomiony i kiedy. Oto jak to zrobić.
- W oknie CLI wpisz sudo nano /lib/systemd/system/display.service. Możesz użyć dowolnej nazwy dla swojej usługi, o ile kończy się ona rozszerzeniem .service.
- W pliku usługi wklej następujące wiersze kodu:
[Jednostka]
Opis = Licznik PiCounter
After = network.target
[Usługa]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restart = zawsze
Użytkownik = pi
[Zainstalować]
WantedBy = multi-user.target
Wszystkie typowe opcje konfiguracji należą do Jednostka i zainstalować sekcje, podczas gdy opcje konfiguracji specyficzne dla usługi znajdują się w sekcji Usługa.
Kilka z powyższych par dyrektywa-wartość, które możesz potrzebować zmodyfikować, obejmuje:
ja. Po: Określa, kiedy uruchomić usługę. Ustawiam to network.target zapewnia, że podana wartość - w tym przypadku network.target - zaczyna się przed rozpoczęciem bieżącej jednostki. Jednak nie kieruje relacją zależności, która ma zostać wyzwolona przez usługę; odbywa się to za pomocą innych dyrektyw, takich jak Wants, Required i WantedBy.
Oczywiście możesz zmienić tę wartość, aby dopasować ją do wymagań projektu. Na przykład, jeśli chcesz, aby Twój program wykonywał się po połączeniu Raspberry Pi z siecią, możesz użyć rozszerzenia network-online.target wartość. Możesz się odwołać Dokumentacja Fedory na systemd aby dowiedzieć się więcej o tych wartościach.
ii. ExecStart: Zawiera ścieżkę bezwzględną i nazwę programu / skryptu, który chcesz wykonać podczas uruchamiania. W zależności od tego, co chcesz wykonać, musisz dodać wartości dla obu tych dyrektyw.
iii. Użytkownik: Identyfikuje nazwę twojego Raspberry Pi. Jeśli zmieniłeś nazwę swojego Pi, musisz podać tę wartość dla użytkownika.
iv. Poszukiwany przez: Jest to najpowszechniejszy sposób określania wyzwalacza dla jednostki. Ustawiając go na multi-user.target, można ustanowić relację zależności, która będzie uruchamiać program, gdy kontrola systemu zostanie przekazana powłoce wielu użytkowników.
Co więcej, powoduje to również uruchomienie programu przed uruchomieniem systemu Pi X-Windows, co oznacza, że program działa nawet przed zalogowaniem się do systemu. Jeśli chcesz, aby skrypt działał przed zalogowaniem się do Raspberry Pi, umożliwia to.
Powyższe linie kodu działają dla programów innych niż GUI. Jeśli jednak chcesz uruchomić program z graficznym interfejsem użytkownika przy użyciu systemd, powinieneś dodać następujący kod do pliku usługi:
[Jednostka]
Opis = Licznik PiCounter
After = network.target
[Usługa]
Środowisko = Wyświetlacz =: 0
Środowisko = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Restart = zawsze
[Zainstalować]
WantedBy = multi-user.target
W powyższej parze dyrektywa-wartość wszystko, co musisz zmienić, to wartość ExecStart dyrektywa. Zastąp ten w bloku kodu programem, który chcesz uruchomić podczas uruchamiania. Po wypełnieniu pliku usługi naciśnij CTRL + O żeby to uratować.
Przetestuj usługę
Po przygotowaniu usługi ręcznie sprawdź, czy działa. W tym celu wpisz w terminalu następujące polecenie: sudo systemctl start display.service. Usługa powinna pomyślnie wykonać Twoje instrukcje.
Gdy to nastąpi, zakończ go za pomocą sudo systemctl stop display.service.
Włącz usługę
Jeśli udało Ci się pomyślnie uruchomić program przy użyciu usługi, nadszedł czas, aby go włączyć, aby uruchamiał program automatycznie przy każdym uruchomieniu Raspberry Pi.
Aby to zrobić, wpisz sudo systemctl włącz display.service w oknie terminala. A kiedy już to zrobisz, wejdź sudo reboot aby ponownie uruchomić Pi.
Po uruchomieniu Raspberry Pi systemd powinien uruchomić program zgodnie z dostarczonymi instrukcjami.
Automatyzacja uruchamiania programu podczas uruchamiania na Raspberry Pi
Podobnie jak większość systemów Linux, Raspberry Pi OS pozwala również wykonywać operacje na kilka sposobów i pozostaje wierne również planowaniu uruchamiania programów. Tak więc, jeśli chcesz uruchamiać programy / skrypty GUI podczas uruchamiania i chcesz mieć lepszą kontrolę nad harmonogramem, systemd jest zdecydowanie lepszą metodą.
To powiedziawszy, jeśli jednak chcesz prostszego rozwiązania lub wymagania projektu wymagają określonego harmonogramu, możesz zapoznać się z naszym przewodnikiem Uruchamianie programu lub skryptu Raspberry Pi podczas uruchamiania uczyć się więcej.
Chcesz wycisnąć więcej ze swojego Raspberry Pi? Oto mnóstwo pomocnych poleceń do poruszania się po terminalu Pi i programowania jego pinów GPIO.
Czytaj dalej
- majsterkowanie
- Raspberry Pi
Yash jest autorem pracującym w MUO w zakresie majsterkowania, Linuksa, programowania i bezpieczeństwa. Zanim znalazł swoją pasję w pisaniu, tworzył dla sieci i iOS. Możesz również znaleźć jego teksty na TechPP, gdzie zajmuje się innymi branżami. Poza technologią lubi rozmawiać o astronomii, Formule 1 i zegarkach.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości, którą właśnie wysłaliśmy.