Python script per crontab: merkwürdig

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Seit Anfang 2017 läuft mein Monitoring Projekt auf einem Raspberry. 1 Python Skript schreibt laufend Daten von einem AD-Wandler (Photovoltaik und Akku) in eine Datenbank auf dem Raspi. Das Skript log_adc.py wird beim Start des Raspi gestartet und läuft ununterbrochen und liefert etwa 1 Datensatz pro Sekunde.


    Ein zweites Skript wird alle 2 Minuten per cron gestartet. Es konsolidiert Daten in 2 weiteren Tabellen auf dem Raspi und dupliziert diese Daten auf eine Datenbank auf meinem Webspace: cons_db_export.py

    Ein drittes Skript konsolidiert Tagesdaten.


    Das Ganze läuft all die Jahre recht störungsfrei. Vielleicht pro Halbjahr einmal, das Daten ausbleiben, die mit einem Neustart des Raspi behoben werden können.


    Es scheint allerdings automatische Software Updates des Raspis gegeben zu haben, wobei ich mich nicht erinnere, derartiges konfiguriert zu haben. Soweit ich es nachvollziehen kann, hat es bei der Behandlung von crontabs Änderungen gegeben.


    Grunddaten meines Raspis:


    pi@raspibms:~ $ lsb_release -a

    No LSB modules are available.

    Distributor ID: Raspbian

    Description: Raspbian GNU/Linux 8.0 (jessie)

    Release: 8.0

    Codename: jessie


    Hier die Konfiguration der crontab:

    pi@raspibms:~ $ crontab -l

    # Edit this file to introduce tasks to be run by cron.

    # m h dom mon dow command

    */2 * * * * /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null 2>&1

    3 0 * * * /usr/bin/python3 /home/pi/bms/cons_day_soc.py /dev/null 2>&1


    Python Prozesse:


    pi@raspibms:~ $ ps -ef | grep python

    pi 1883 1 17 Mar08 ? 18:59:30 /usr/bin/python3 /home/pi/bms/log_adc.py

    pi 4194 4190 0 22:40 ? 00:00:00 /bin/sh -c /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null 2>&1

    pi 4195 4194 1 22:40 ? 00:00:03 /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null

    pi 4202 4198 0 22:42 ? 00:00:00 /bin/sh -c /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null 2>&1

    pi 4203 4202 2 22:42 ? 00:00:03 /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null

    pi 4213 4209 0 22:44 ? 00:00:00 /bin/sh -c /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null 2>&1

    pi 4214 4213 12 22:44 ? 00:00:03 /usr/bin/python3 /home/pi/bms/cons_db_export.py /dev/null

    pi 4217 1388 0 22:44 pts/1 00:00:00 grep --color=auto python


    Zwei Dinge verstehe ich nicht:

    1. Wieso wird anscheinend zeitgleich ein zweiter Prozess gestartet?

    2. Wieso scheinen Prozesse noch nach mehreren Minuten nicht beendet zu sein?

  • mbrod `crond` startet eine Shell die dann das ausführt was Du in der Crontab geschrieben hast. Das sind zwei Prozesse. Das sieht man doch eigentlich ganz gut an den Ausgaben‽


    Warum Dein Programm nach zwei Minuten noch nicht beendet ist kann man ohne Glaskugel nicht sagen. Irgend etwas in Deinem Skript wird wohl länger als zwei Minuten dauern. Dem kommt man am besten durch Logging und/oder Profiling auf die Spur.

    Tradition is just peer pressure from dead people.

  • @__blackjack__ Danke für deine Erklärungen. Die Länge der Ausführungszeit scheint daran zu liegen, dass die Datenbank inzwischen durch die Länge der Tabellen (über 1 Million Datensätze) etwas Schwierigkeiten hat, die Aufrufe der Prozeduren rechtzeitig abzuarbeiten.

  • Ja, sehe ich auch so. Ich merke aber schon einen Unterschied, wenn ich mit einem Datenbank Klient direkt auf den Raspi zugreife, oder auf die Kopie auf meinem Webspace. Auf dem Raspi musste ich mehrfach schon Tabellen reparieren. Aber das ist jetzt ein anderes Thema. Danke jedenfalls.