Script von Python 2 auf Python 3

  • Hast Du den RPi neu gestartet? Denn min steht ja nicht in der Ausgabe in Beitrag#17.

    Falls Neustart, dann kann es auch sein, dass ich verutscht bin und es müsste in Zeile 17 uptime[2][:-1] statt [3] sein. Kann es leider nicht testen.

    Wenn Du im Skript z.B. in eine Zeile nach 13 ein print(uptime) schreibst, dann siehst Du die Liste und kannst die Elemente zählen und richtig eintragen.

  • Hallo,

    Strings baut man nicht mit + zusammen, sondern man nutzt f-Strings oder die format-Methode von Strings.

    Man kommt über die uptime auch anders dran und die Tage kann man auch einfacher ausrechnen:

    Python
    >>> import time, datetime
    >>> uptime = time.monotonic()
    >>> uptime
    346.156
    >>> uptime_days_seconds = datetime.timedelta(seconds = uptime)
    >>> uptime_days_seconds
    datetime.timedelta(seconds=346, microseconds=156000)
    >>>

    datetime.timedelta gibt auch Tage aus - wenn halt genug Zeit verstrichen ist. Ist im obigen Beispiel nicht zu sehen, weil mein Rechner kurz vorher neu gestartet hatte.

    Gruß, noisefloor

  • hyle Ja ich hatte neu gestartet. Morgen, wenn über 1 Tag vergangen ist, werde ich nochmal testen. Ich hatte den RPI wieder in seine Ecke zurück gelegt. Es läuft jetzt, owcloud, pihole und traccar. Die wichtigsten Sachen (Temperatur, Laufzeit, Speicherauslastung u.s.w.) werden auf einem 4x20 Zeichen LCD angezeigt. Auch wenn der Code wie noisefloor bemerkt hat verbesserungswürdig ist ;) Für meine Zwecke reicht es erst mal. Vielen Dank

  • Für einen Test musst du nicht einen Tag warten. Stell die vor es ginge um Jahre. Würdest du da auch ein Jahr warten?! Also einfach einen Wert vorgeben der ausreichend für einen Tag ist.

  • Wie auch immer, ich schrieb ja schon, dass ich gleich uptime -p verwerten würde um nicht rumfrickeln zu müssen, z.B.

    Die Ausgabe sieht bei mir dann so aus:

    Code
    up 7 weeks, 1 day, 2 hours, 5 minutes

    Färtsch! 8o

  • Über Linux lernt man am besten, wenn man die Tools selbst implementiert.

    Um z.B. in Erfahrung zu bringen, was z.B. das Programm uptime für syscalls aufruft, kann man strace verwenden.

    Dann sieht man z.B. welche Dateien geöffnet werden.

    Schnell und einfach könnte das so aussehen:

    Code
    [andre@andre-Fujitsu-i5 ~]$ strace uptime 2>&1 | grep proc
    openat(AT_FDCWD, "/usr/lib/libprocps.so.8", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/proc/self/auxv", O_RDONLY) = 3
    openat(AT_FDCWD, "/proc/sys/kernel/osrelease", O_RDONLY) = 3
    openat(AT_FDCWD, "/proc/self/auxv", O_RDONLY) = 3
    openat(AT_FDCWD, "/proc/uptime", O_RDONLY) = 3
    openat(AT_FDCWD, "/proc/loadavg", O_RDONLY) = 4

    /proc/uptime ist das, was gesucht wird.

    Der erste Wert ist die Uptime in Sekunden und der zweite Wert ist die Prozesszeit in Sekunden. Der zweite Wert kann größer sein, als der erste Wert, da alle modernen PCs mehr als einen CPU-Kern haben.

    In Python könnte das dann so aussehen:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!