Bir Raspberry Pi ile ilk başladığımda, bunu genellikle bir video akışının sürekli izlenmesi veya web’den veri toplayan küçük bir komut dosyası gibi uzun süren bazı komut dosyalarının üstesinden gelmek için kullanırdım. Karşılaştığım sorun, senaryonun sona ermemesi için Pi’ye yeterince uzun süre nasıl bağlı kalacağımdı.
Bir klavye, monitör bağlayabilir ve pi’yi bu şekilde çalıştırabilirsiniz – ancak Raspberry Pi’m ile SSH üzerinden çalışmayı tercih ederim, böylece normal bilgisayarımın tüm konforlarına sahip olabilirim.
Peki, zaman aşımına uğramaması ve başarısız olmaması için Pi’nizde bir betiğin SSH üzerinden uzun süre çalışmasını nasıl sağlarsınız? Birkaç yol var.
Bu Proje İçin İhtiyacınız Olan Şeyler
Raspberry Pi’nizde uzun süre çalışan komut dosyaları nasıl çalıştırılır
Başlamadan önce Raspberry Pi’nizi kurun. Bunu daha önce yapmadıysanız, nasıl yapılacağı ile ilgili makalemize bakın. bir Raspberry Pi kurun ilk kez veya nasıl yapılır başsız Raspberry Pi kurulumu (klavye ve ekran olmadan). Bu proje için bir başsız Raspberry Pi kurulumu.
Üzerinde çalıştığınız projeye bağlı olarak – uzun süre çalışan komut dosyalarını işlemek için ele alacağımız iki yöntem vardır. Bir komut dosyasını yalnızca bir veya iki kez çalıştırıyorsanız – tmux yöntemini kullanın. Pi’nizi uzun vadeli bir proje için kuruyorsanız ve otomatik olarak yeniden başlayan bir komut dosyası istiyorsanız, “hizmet” yöntemine geçin.
Raspberry Pi’nizde tmux kullanma
tmux paketi, ayırabileceğiniz ve arka planda çalışmasına izin verebileceğiniz ayrı bir kabuk oluşturmanıza olanak tanır. Uzun zaman alacağını bildiğiniz tek seferlik bir programınız varsa (örneğin bir make build komutu), bir tmux oturumu oluşturabilir, uzun süredir çalışan komutunuzu çalıştırabilir, bu oturumdan ayrılabilir ve pi’den çıkış yapabilirsiniz. endişesiz. Pi’nin güç kaynağını kesmediğiniz sürece betiğiniz çalışmaya devam etmelidir. Oturuma ekleyebilir ve periyodik olarak kontrol edebilir ve çalışmasına izin vermek için ayırabilirsiniz.
Bu, kullanım durumunuza uyuyor gibi görünüyorsa; İşte nasıl kullanılacağı.
1. tmux paketini kurun.
sudo apt-get install -y tmux
2. Yeni bir tmux oturumu oluşturun.
# pick any session name you like
tmux new -s your_session_name
python3 my_really_long_running_script.py
3. Oturumdan ayrılma aşağıdaki tuşları kullanarak:
Hit “Ctrl + B”
Then hit “D”
Arka planda uzun süredir çalışan komut dosyanız ile orijinal oturumunuza geri döneceksiniz. Bu noktada çıkış yapabilirsiniz.
4. için oturuma yeniden bağlan nasıl gittiğini kontrol etmek için aşağıdakileri çalıştırmanız yeterlidir
# list all the sessions running
tmux list-sessions
# attach to your session
tmux a -t your_session_name
Ve bu kadar. İsterseniz 4. adımda anlatıldığı gibi tekrar çıkarabilirsiniz. Tmux, yükleme adımı gibi tek seferlik çalıştırdığınız komutlar için en iyi şekilde kullanılır. Otomatik yeniden başlatma ile sürekli olarak uzun vadeli bir şey çalıştırmak istiyorsanız – bir hizmet oluşturmak isteyeceksiniz.
Raspberry Pi’nizde Servis Oluşturma
Pi’nizde sürekli olarak çalıştırmak istediğiniz bir uygulama için bir hizmet en iyi şekilde kullanılır. Belki de sürekli olarak hava durumu istasyonu verilerini kontrol eden ve bunları buluta gönderen bir komut dosyası veya bir LED şeridin rengini değiştirme isteklerini dinleyen basit bir uygulama olabilir. Yeniden başlatmaları otomatik olarak halledebilecek ve Pi başladığında başlayacak bir şey arıyorsanız – bir hizmet harika bir çözümdür.
1. Bir hizmet oluşturmak için önce çalıştırmak istediğiniz komut dosyasının düzgün çalışıp çalışmadığını test edin. Çağırırken dosyanın tam yolunu kullandığınızdan emin olun.
python3 /home/pi/my_script.py
2. Sırada, hizmetimizi tanımlamak için /etc/systemd/system içinde bir dosya oluşturun:
sudo touch /etc/systemd/system/myscript.service
3. O zaman gerekli bilgileri ekleyerek dosyayı düzenleyin hizmeti tanımlamak ve arıza durumunda yeniden başlatılmasına izin vermek için.
sudo nano /etc/systemd/system/myscript.service
Dosyaya aşağıdaki satırları ekleyin
[Unit]
Description=My long running script
After=network.target
StartLimitIntervalSec=0[Service]
Type=simple
User=pi
Restart=always
RestartSec=1
ExecStart=python3 /home/pi/my_script.py
[Install]
WantedBy=multi-user.target
4. Dosyanızı kaydettikten sonra, hizmeti başlat ve etkinleştir – hemen ve ayrıca pi yeniden başladığında çalışmasına izin verir.
sudo systemctl start myscript && sudo systemctl enable myscript
5. Komut dosyanız artık arka planda pi’nizde çalışacak ve başarısız olduğunda otomatik olarak yeniden başlayacaktır. Yapabilirsin aşağıdaki komutla kontrol edin:
sudo systemctl status myscript
Ve bu kadar. Pek çok hizmet, normal çalışmasının bir parçası olarak Pi’nizde zaten çalışıyor. Bu hizmeti tanımlayıp etkinleştirerek, yalnızca prize takılıyken komut dosyanızı Pi’nizin yaptığı diğer şeylere ekleyebilirsiniz. Herhangi bir noktada hizmeti durdurmanız gerekirse, aşağıdaki komutla yapabilirsiniz:
sudo systemctl stop myscript
Komut dosyalarını arka planda çalıştırmanın başka birçok yolu var, ancak Raspberry Pi projeleri için bu ikisi benim vazgeçilmez komutlarım. Mutlu bina!
# pick any session name you like
tmux new -s your_session_name