Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Python => Konuyu başlatan: fide - 16 Ocak 2021, 11:18:01

Başlık: Raspberry Pi üzerinde debug çıktıları
Gönderen: fide - 16 Ocak 2021, 11:18:01
Merhaba.

raspberry pi4 üzerinde sensörler ve kamera ile görüntü işleme yapmaya çalışıyorum. Sistem çalışırken yanında olmam mümkün olmadığı için sistemin açılışında mainstarter.py isimli bir dosyayı çalıştıracak kodları ~/.bashrc dosyasına ekledim. Sonsuz döngü içinde olacağı için de sonuna & koydum.
python3 mainstarter.py & 

Sistem bu şekilde sıkıntısız çalışıyor(du).
İlk düzenekte açılışta mainstarter.py dosyası çalışıyor. Hafızada çalışan programları ps aux|grep python3 komutu ile listeliyor ve çalışmasını istediğim dosya liste içeriğinde yoksa main.py dosyasını çalıştırıyor.

Buraya kadar sıkıntı yok. Herhangi bir sebepten program kırılırsa mainstarter çalışmaya devam ettiği için 3 saniye içinde hafızada çalışan prg dökümüne bakıp main.py dosyasını çalıştırıyor.

Aynı düzeneğin ikizine de aynı sistemi kurdum. Kullanılan sd kartlar bile aynı marka/ model / kapasitede.

İlk düzenek çalışırken verdiği debug çıktılarını (print ile bastırdığım değişken değerleri) log dosyasına atarken aynı kodlarla çaışan ikinci düzenek ise debug kodlarını anlamsız şekilde terminal ekranına basıyor. Ve sudo kill xxx ile mainstarter.py dosyasını durdurmaya çalıştığımda ise sistem saçma bir şekilde tekrar mainstarter.py dosyasını tekrar başlatıyor ve kapanmıyor. Açtığım her terminal penceresinde bu debug çıktısını basıyor.

Önerisi olan? 

Dosya içeriklerini aşağıya ekliyorum.
/.bashrc eklenen satır
cd ~/PycharmProjects/myThesis
#~/.virtualenvs/cv/bin/python3 -u mainstarter.py &

mainstarter.py içeriği
import subprocess
import os
from time import sleep
from datetime import datetime, date, time
import picamera
from notify import beep, blink

aranan="/home/pi/.virtualenvs/cv/bin/python3 -u main.py"



#txt=subprocess.call(["ps","aux","|grep main.py"])
#print(txt)

while(True):
    sleep(3)
    data=os.popen("ps aux|grep python3").read()
    dataP=data.split("\n")
    chk = False
    for i in dataP:
        print("Değerler:{}".format(i))
        if aranan in i:
            chk=True
            pid=i.split()[1].strip()
            print("\r\n pid:{}\r\n".format(pid))

    if chk:
        print("Program çalışıyor")
    else:
        print("Program çalışmıyor")
        sleep(3)
        subprocess.call(["pwd"])

        tdy = str(date.today().year) + "-" + str(date.today().month) + "-" + str(date.today().day)
        hms = tdy + "-" + str(datetime.now().hour) + "-" + str(datetime.now().minute) + "-" + str(datetime.now().second)
        logFile = "log/log-" + hms + ".txt"
        print(logFile)
        beep(rep=10)
        os.system("{}>>{}".format(aranan,logFile))



Başlık: Ynt: Raspberry Pi üzerinde debug çıktıları
Gönderen: brandice5 - 19 Ocak 2021, 13:32:07
mainstarter.py programini ".bashrc" yerine "/etc/rc.local" icine koy.

Cunku bashrc her yeni terminal actiginda tekrar calistirilir. Sende farkinda olmadan aslinda birden fazla mainstarter.py calistirmis olursun.