Ich habe dieses kleine Pythonscript, das die Auslastung der CPU überprüft und überprüfen soll, ob ein Prozess, in dem Fall sox läuft:
Code
#!/usr/bin/env python3
import subprocess
import time
import psutil
max_cpu = 20
min_cpu = 19
while True:
avg_cpu = int(psutil.cpu_percent(3))
if avg_cpu < min_cpu:
print("{} ist weniger als {}".format(avg_cpu, min_cpu))
print("Prüfe, ob Prozess läuft")
PROCNAME = "sox"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
print("Prozess läuft, ich beende ihn")
subprocess.run("/home/pi/kill_prozess.sh", check=True)
time.sleep(1)
else:
print("Prozess läuft nicht, ich starte ihn")
subprocess.run("/home/pi/start_prozess.sh", check=True)
time.sleep(1)
if avg_cpu > max_cpu:
print("{} ist über {}".format(avg_cpu, max_cpu))
time.sleep(1)
PROCNAME = "sox"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
print("Prozess läuft schon")
print(PROCNAME)
time.sleep(1)
else:
print("Prozess läuft nicht")
print(PROCNAME)
time.sleep(1)
Alles anzeigen
Trotzdem sagt er mir immer, Prozess läuft nicht:
Code
40 ist über 20
Prozess läuft nicht
sox
Prozess läuft nicht
sox
Prozess läuft nicht
sox
Prozess läuft nicht
sox
Wo habe ich da schon wieder den Denkfehler ?