Hmmm, dit is interessant. Ik krijg het met het loggen niet echt goed aan het werk.
Ik heb cronlogging geactiveerd, maar daar lijkt niets in terecht te komen. Ik denk dat het komt omdat de cronjob ook wel werkt. Er komen alleen regels in dat het script gestart wordt. Verder geen problemen.
Vervolgens heb ik geprobeerd
code:
1
| python mijn_super_scriptje.py &> ohdear_why_does_it_crash.log |
Maar dan komt er NIETS in het bestand terecht. het bestand wordt wel aangemaakt. Geen idee waarom er niets in het bestand terecht komt.
Dan heb ik deze nog geprobeerd;
code:
1
| python mijn_super_scriptje.py & 2>&1 | tee -a ohdear_why_does_it_crash.log |
Maar toen werd er helemaal niets gelogd en ook het bestand werd niet aangemaakt. Te weinig kennis van Linux om te bedenken waarom dan niet.
Wat ik daarna ben gaan onderzoeken is de versie waaronder het script vanuit de cronjob gestart wordt.
Daarvoor heb ik het volgende aan het script toegevoegd:
code:
1
2
| s = sys.version
LCDLib.lcd_display("",1,"",2,"",1,s,1) |
Daardoor wordt de huidige python versie op het display weergegeven.
Het blijkt uiteindelijk toch dezelfde versie te zijn als die gestart wordt als ik het script in de terminal aanroep.
Een daarbij ben ik nog iets tegengekomen. Het versienummer blijft in beeld staan. Ik denk dat het script aan het einde van de eerste loop crasht ergens op.
Als ik het script start in te terminal dan heeft het ook output naar de terminal. Het script roept MPC aan in een os.open() call. Daar komt dus output van MPC op terug. Kan het zijn omdat het script vanuit een cronjob gestart wordt en het zijn output niet kwijt kan, dat hij daarom crasht? Is er een mogelijkheid om dat af te vangen en naar bijvoorbeeld null te sturen?
-EDIT-
nu dat dev/null laat ik voor nu maar even zitten. Wat wel werkt (de logging dan)
code:
1
| python mijn_super_scriptje.py > ohdear_why_does_it_crash.log & |
Ik zie dan output in het log bestand dat MPC daadwerkelijk begint te spelen. Ik hoor echter geen geluid.
Ik heb echter een functie ingebouwd om de Pi netjes down te brengen bij het drukken op een specifieke knop in mijn schakeling. En wat blijkt? Die werkt. Het script crasht dus helemaal niet.
Sterker nog: het blijkt, dat als ik op een knop druk er netjes gespeeld wordt (MPC next wordt aangeroepen).
De eerste loop lijkt dus iets niet goed te doen.
Dat kan ik zelf wel uitzoeken. Bedankt voor het meedenken in ieder geval. Het blijkt dus intern aan het script te liggen. Wellicht eerst een bericht op de LCD zetten: "Press a button".
[
Voor 21% gewijzigd door
ElCondor op 21-02-2017 23:13
]