Raspberry Pi, çeşitli uygulamalar ve projeler için kullanabileceğiniz güçlü bir SBC'dir (tek kartlı bilgisayar). Çok yönlülüğü, kısmen Raspberry Pi OS ve çalıştırdığı diğer Linux tabanlı işletim sistemleri sayesinde, özel komut dosyaları da dahil olmak üzere her türlü programı çalıştırma yeteneğinde yatmaktadır.
Raspberry Pi üzerinde bir komut dosyası veya program çalıştırmak, onu sistemde bulup çalıştırmak kadar basittir. Ama ya bu süreci otomatikleştirmek istiyorsanız, belki de projeniz gerektirdiğinden veya iş akışınızı kolaylaştırmak istiyorsanız?
Buna bir cevap, systemd'nin nasıl kullanılacağını öğrenmektir.
Systemd nedir?
systemd, modern Linux sistemlerinde hizmet yapılandırması ve davranışı için bir sistem bileşenleri paketidir. Bir ile tanımlanmıştır PID (işlem tanımlayıcı) Sistem başlangıcında başlatılan ilk işlem olduğu için 1. Genel olarak, systemd'nin amacı, sistem başlangıcında programları yönetmenize ve çalıştırmanıza yardımcı olmaktır. Ve bu, programınızı Pi'de başlangıçta başlatmak için kullanacağınız şeydir.
Başlangıçta belirtildiği gibi, Linux sistemlerinde başlangıçta programları çalıştırmak için rc.local, cron ve autostart gibi birkaç yöntem vardır. Bununla birlikte, GUI (grafik kullanıcı arayüzü) programlarını başlatmak istiyorsanız, systemd daha iyi bir çözüm olur. belirli sistem işlemleri başladıktan sonra çalışacak uygulamaları otomatikleştirin veya programınıza kadar programları tekrar tekrar çalıştırın İşler.
İlişkili: Cron ve Crontab ile Linux'ta Görevler Nasıl Zamanlanır
Başlangıçta Programları Başlatmak için systemd Nasıl Kullanılır
systemd, Linux sistemlerinde başlangıçta programları başlatmak için biraz daha karmaşık bir yöntemdir. Bununla birlikte, diğer yöntemlere göre sunduğu zamanlama esnekliği - yukarıda bahsettiklerimiz - her açıdan karmaşıklığından tamamen ağır basmaktadır.
Systemd yöntemi, aygıtlar, hizmetler, soketler, başlangıç hedefi ve diğer temel sistem bileşenleri hakkında kodlama bilgilerini tutan bir tür .ini dosyaları gibi birim dosyalarını kullanır.
Birim dosyaları çeşitli türlerdedir. Bu nedenle, ne tür bir kaynak bildirmek istediğinize bağlı olarak, buna göre bir birim dosya türü seçmeniz gerekir. Bununla birlikte, bu kılavuzun amacı için, sistemdeki programların ve komut dosyalarının başlangıç davranışını yönetmenize olanak tanıyan .service birim dosyalarına bağlı kalacağız.
Aşağıda, systemd kullanarak başlangıçta bir komut dosyası / program başlatmaya ilişkin adımların bir dökümü bulunmaktadır.
Hizmet Oluşturmak
Programınızı başlangıçta çalışacak şekilde ayarlamak için, systemd'ye hangi programın ne zaman çalıştırılacağını söyleyen bir hizmet birimi dosyası oluşturun. İşte nasıl yapılacağı.
- CLI penceresine yazın sudo nano /lib/systemd/system/display.service. .Service uzantısıyla bittiği sürece hizmetiniz için herhangi bir adı kullanabilirsiniz.
- Servis dosyasına aşağıdaki kod satırlarını yapıştırın:
[Birim]
Açıklama = PiCounter
Sonra = network.target
[Hizmet]
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Yeniden başlat = her zaman
Kullanıcı = pi
[Yüklemek]
WantedBy = multi-user.target
Tüm genel yapılandırma seçenekleriniz, Birim ve Yüklemek bölümler, hizmete özel yapılandırma seçenekleri ise Hizmet bölümü altındadır.
Değiştirmeniz gerekebilecek yukarıdaki yönerge-değer çiftlerinden birkaçı şunları içerir:
ben. Sonra: Hizmetin ne zaman başlatılacağını belirler. Olarak ayarlanıyor network.target Listelenen değerin - bu durumda network.target - mevcut üniteye başlamadan önce başlamasını sağlar. Ancak, hizmetin tetiklemesi için bir bağımlılık ilişkisi yönlendirmez; Bu, Wants, Requirve WantedBy gibi diğer yönergeler aracılığıyla yapılır.
Tabii ki, bu değeri proje gereksinimlerinize uyacak şekilde değiştirebilirsiniz. Örneğin, Raspberry Pi'niz bir ağa bağlandıktan sonra programınızın çalışmasını istiyorsanız, network-online.target değer. Başvurabilirsin Fedora'nın systemd ile ilgili belgeleri bu değerler hakkında daha fazla bilgi edinmek için.
ii. ExecStart: Başlangıçta yürütmek istediğiniz mutlak yolu ve program / komut dosyası adını tutar. Bu nedenle, neyi yürütmek istediğinize bağlı olarak, bu direktiflerin her ikisine de değer eklemeniz gerekir.
iii. Kullanıcı: Raspberry Pi'nizin adını tanımlar. Pi'nizin adını değiştirdiyseniz, kullanıcı için bu değeri girmeniz gerekir.
iv. Aranıyor: Bir birim için tetiği belirlemenin en yaygın yoludur. Olarak ayarlayarak multi-user.target, sistem kontrolü çok kullanıcılı kabuğa verildiğinde programı çalıştıracak bir bağımlılık ilişkisi kurabilirsiniz.
Dahası, bu aynı zamanda programınızı Pi'nin X-Windows sistemi başlamadan önce çalıştırır, bu da programınızın siz sisteme giriş yapmadan önce çalıştığı anlamına gelir. Raspberry Pi'nizde oturum açmadan önce bir komut dosyasının çalışmasını istiyorsanız, bu bunu yapmanızı sağlar.
Yukarıdaki kod satırları GUI olmayan programlar için çalışır. Ancak, systemd kullanarak bir GUI programını çalıştırmak istiyorsanız, aşağıdaki kodu hizmet dosyanıza eklemelisiniz:
[Birim]
Açıklama = PiCounter
Sonra = network.target
[Hizmet]
Ortam = Ekran =: 0
Çevre = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Yeniden başlat = her zaman
[Yüklemek]
WantedBy = multi-user.target
Yukarıdaki yönerge-değer çiftinde, değiştirmeniz gereken tek şey, ExecStart direktif. Kod bloğundakini, başlangıçta çalıştırmak istediğiniz programla değiştirin. Servis dosyasını doldurduktan sonra, CTRL + O kaydetmek için.
Hizmeti Test Edin
Hizmet hazırken çalışıp çalışmadığını manuel olarak doğrulayın. Bunun için terminale aşağıdaki komutu yazın: sudo systemctl başlangıç display.service. Hizmet, talimatlarınızı başarıyla uygulamalıdır.
Bir kez yaparsa, ile sonlandırın sudo systemctl stop display.service.
Hizmeti etkinleştirin
Hizmeti kullanarak programınızı başarılı bir şekilde çalıştırmayı başardıysanız, Raspberry Pi'nizi her başlattığınızda programınızı otomatik olarak yürütmesi için etkinleştirmenin zamanı gelmiştir.
Bunu yapmak için yazın sudo systemctl display.service'i etkinleştir terminal penceresinde. Ve bittiğinde, girin sudo yeniden başlatma Pi'nizi yeniden başlatmak için.
Raspberry Pi'niz başlatıldığında, systemd programınızı verdiğiniz talimatlara göre çalıştırmalıdır.
Raspberry Pi'de Başlangıçta Program Başlatmayı Otomatikleştirme
Çoğu Linux sistemi gibi, Raspberry Pi OS de işlemleri çeşitli şekillerde gerçekleştirmenize izin verir ve program başlatmalarını planlamak için de geçerli kalır. Bu nedenle, GUI programlarını / komut dosyalarını başlangıçta başlatmak istiyorsanız ve zamanlamanız üzerinde daha iyi kontrol istiyorsanız, systemd açıkça daha iyi bir yöntemdir.
Bununla birlikte, daha basit bir çözüm istiyorsanız veya proje gereksinimleriniz belirli bir zamanlama gerektiriyorsa, kılavuzumuza bakabilirsiniz. Başlangıçta bir Raspberry Pi Programı veya Komut Dosyası Çalıştırma daha fazla öğrenmek için.
Raspberry Pi'nizden daha fazlasını mı almak istiyorsunuz? Pi'nin terminalinde gezinmek ve GPIO pinlerini programlamak için birçok yararlı komut burada.
Sonrakini Oku
- DIY
- Ahududu Pi
Yash, DIY, Linux, Programlama ve Güvenlik için MUO'da Personel Yazarıdır. Yazma tutkusunu bulmadan önce, web ve iOS için geliştirme yapıyordu. Yazısını, diğer dikeyleri de kapsadığı TechPP'de de bulabilirsiniz. Teknoloji dışında astronomi, Formula 1 ve saatler hakkında konuşmaktan hoşlanıyor.
Haber bültenimize abone ol
Teknoloji ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için haber bültenimize katılın!
Bir adım daha…!
Lütfen size az önce gönderdiğimiz e-postadaki e-posta adresinizi onaylayın.