Raspberry Pi başlangıçta programları otomatik olarak başlatıyor


22

İki Raspberry Pi'nin (runnnig Raspbian) sensörlü ve veri toplayan baz istasyon Raspberry Pi'den oluşan kablosuz bir sensör ağı kurdum.

Sistemi çalıştırmak istediğimde, her bir sensör ünitesine giriş yapıp iki döngüsel Python programını çalıştırmak zorundayım, biri sensör verilerini toplamak için diğeri baz istasyonuna iletmek için.

Bu birimler Internet erişimi olmayan garip yerlere gidiyor, bu yüzden onları çalıştırmak için yanımda bir monitör, klavye ve fare almak kolay değil. Bunları otomatik olarak giriş yapmak, program 1'i çalıştırmak ve ardından program 2'yi başlangıçta otomatik olarak çalıştırmak üzere ayarlayabileceğim bir yol var mı?

Yanıtlar:


15

Bu 2 programı rc.local dosyasına ekleyebilirsiniz. Bu başlangıçta onları çalıştıracak. Daha fazla bilgi http://www.raspberrypi.org/documentation/linux/usage/rc-local.md adresinde bulunabilir .


3
Değil insanları çelme görünüyor ki doc bir nokta: kullanmayan Do sudoiçinde rc.localkendisi. Önyüklemede kök ayrıcalıkları ile çalıştırılır. &Programınız hızlı bir şekilde çıktıktan sonra bir şey yapmazsa kullanma ile ilgili bölüme dikkat ettiğinizden emin olun .
goldilocks

Kaçak etmek programlarınızı isterseniz ağ askıda ve sonra /path/to/somescript.sh &için rc.localve komut dosyası eklenti içinde while ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;programlarınızı başlamadan önce.
Tor Klingberg,

+ goldilocks Sorunları rc.localönceden sudo çalıştırmadan yazma erişimi elde edemezsiniz . Sen ne önerirsin?
Rincewind

15

Xer0FyT tarafından verilen cevap muhtemelen PI'de bir programı otomatik olarak başlatmanın en kolay yoludur. Ancak, başlatılan program herhangi bir sebepten ötürü çöktüğünde problemler yaşanır, çünkü herhangi bir süreç izlemesi olmadığı için yeniden başlatılmayacaktır. Ben şahsen bunun yerine daemontools kullanmanızı tavsiye ederim . Kurulumu oldukça kolaydır (ve Raspbian'da bulunur). Temel olarak run, programınızı başlatan bir kabuk betiği içeren bir servis dizini yaratırsınız. Daemontools daha sonra herhangi bir nedenle çökmesi durumunda programınızın başlatıldığından ve yeniden başlatıldığından emin olacaktır.

Daemontools'u ayarlamak oldukça basittir. Sadece

apt-get install daemontools daemontools-run

Ardından çalıştırılabilir bir çalıştırma komut dosyası içeren servis dizini oluşturun:

# create the service directory
mkdir -p /service/my-service

# create the run script
cat > /service/my-service/run <<EOF
#!/bin/sh
echo "I'm an example service executed by daemontools"
sleep 1
# Replace those 2 lines with a real call to your program like this:
# exec /my/program.py --arguments
EOF

# make it executable
chmod 755 /service/my-service/run

Bir göz atın /service/my-service/runve düzenleyin, böylece çalıştırmak yerine kendi programınızı başlatır echo. Bir kez yapıldıktan sonra, bu dizinin içindeki /etc/servicedaemontools dizinini otomatik olarak (yeniden) başlatın:

cd /etc/service
ln -s /service/my-service .

Yaklaşık 5 saniye sonra programınız çalışmalıdır. Kullanarak başlatabilir / durdurabilirsiniz

# stop it
$ svc -d /service/my-service

# start it
$ svc -u /service/my-service

Ayrıca (örneğin) syslog'da oturum açmak da mümkündür. Yani programınızın çıktısı kaybolmaz. Bu konuda daha eksiksiz bir blog yazısı yazdım: https://info-beamer.com/blog/running-info-beamer-in-production


9
  1. Raspian'da Menu, Preferences ve Main Menu Editor seçeneklerine tıklayın.
  2. Tercihler'e tıklayın ve LXSession için Varsayılan uygulamaları kontrol edin
  3. Tamam'ı tıklayın ve ana menü düzenleyicisini kapatın
  4. Şimdi Menü ve Tercihler altında, LXSession için varsayılan uygulamaları tıklayın.
  5. LXSession yapılandırması açılır
  6. Otomatik başlat'ı tıklayın
  7. Manuel olarak başlatılan uygulamalar altında java komut satırınıza yapıştırın
  8. ekle'yi tıklayın
  9. LXSession yapılandırma uygulamasını kapatın ve pi'nizi yeniden başlatın

    java uygulamanız yeniden başlatıldıktan sonra çalışmalı


Burada biraz daha fazla detayın gerekli olduğunu düşünüyorum
Darth Vader

Benim için iyi çalıştı!
jbyrnes

@Palmeta teşekkürler! Otomatik başlatma programında bir programım vardı ancak gerçekte nereye koyduğumu unuttum. Heryere baktım. Açıkladığınız yapılandırma aracı ile sonunda tekrar bulabilir ve devre dışı bırakabilirim: D! 100 puan
Pascal Lamers

2

Muhtemelen zaten cronPI'nin temizlik işlerinden bazıları için kurulum yaptınız.

Arama man 5 crontabiçin @reboot.


0

Araştırma yapmak isteyebilirsiniz service. Sistemin girişinin bir parçası olan bir init betiği oluşturabilir ve uygun bir çalışma seviyesine koyabilirsiniz.

Run man service.

İşte init scriptleri oluşturmak için bir rehber: http://www.novell.com/coolsolutions/feature/15380.html


2
Ne yazık ki, systemdRaspbian dahil olmak üzere çoğu Linux dağıtımına yönelten aceleci bir tavırla, OP sistemlerini sysV'den devralacak şekilde güncellese, bu cevabın güncellenmesi gerekecek init. 8- (
SlySven

0

Sadece bu linki takip edin .

Masaüstünde test.txt bulunduğunu varsayarak, bir örnek olabilir:

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@leafpad /home/pi/Desktop/test.txt

ve çalışıyor!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.