Raspberry Pi üzerinde debug çıktıları

Başlatan fide, 16 Ocak 2021, 14:18:01

fide

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
datetime
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))



Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

brandice5

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.

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.