Hallo Ihr,
wie kann ich einen (Programmier)Fehler, welcher zum Abbruch eines als cron-Job laufenden Skripts führt, in eine Datei schreiben ? Wie muss da der Aufruf des Skripts lauten ?
maksimilian
Beendigungsfehler eines Skripts dokumentieren
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
da du cron benutzt, gehe ich davon aus, dass du Linux im Einsatz hast? Dann müsstest du stderr in eine Datei umleiten. Dazu gibt es bergeweise Beispiele im Netz.
Oder du startest das Skript über eine systemd Timer Unit, dann sollte die Fehlermeldung des Skripts automatisch im Journal von journald landen, welches du über journalctl auslesen kannst.
Gruß, noisefloor
da du cron benutzt, gehe ich davon aus, dass du Linux im Einsatz hast? Dann müsstest du stderr in eine Datei umleiten. Dazu gibt es bergeweise Beispiele im Netz.
Oder du startest das Skript über eine systemd Timer Unit, dann sollte die Fehlermeldung des Skripts automatisch im Journal von journald landen, welches du über journalctl auslesen kannst.
Gruß, noisefloor
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Danke, noisefloor. Ich verbinde als newbi Python immer mit raspbian, sorry. Ja, ich dachte mir bereits, dass die Umlenkung von stderr in eine Datei eine der Lösungen sein würde.
maksimilian
maksimilian
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Die Anschlussfrage ist vielleicht etwas anspruchsvoller.
Wie kann ich erreichen, dass
1. an die in der Umleitung von stderr angegebene Datei angefügt wird ?
2. in der Datei für jeden Eintrag ein Datum hinzugefügt wird ?
maksimilian
Wie kann ich erreichen, dass
1. an die in der Umleitung von stderr angegebene Datei angefügt wird ?
2. in der Datei für jeden Eintrag ein Datum hinzugefügt wird ?
maksimilian
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
zu 1.: siehe hier https://wiki.ubuntuusers.de/Shell/Umleitungen/
zu 2: mit Umleitungen AFAIK gar nicht. ABER wenn du das Skript über systemd startest, landet die Fehlermeldung im Journal von systemd und da sind immer Zeitstempel dabei.
Gruß, noisefloor
zu 1.: siehe hier https://wiki.ubuntuusers.de/Shell/Umleitungen/
zu 2: mit Umleitungen AFAIK gar nicht. ABER wenn du das Skript über systemd startest, landet die Fehlermeldung im Journal von systemd und da sind immer Zeitstempel dabei.
Gruß, noisefloor
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Ah, jetzt lerne ich wieder etwas und entdecke, dass der Start eines cron-Jobs in der Datei /var/log/syslog eingetragen wird. Kann das verhindert werden, um die Datei bei kurzem Aufrufintervall des cron-Jobs nicht aufzublähen ?
maksimilain
maksimilain
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
warum? Ist deine Festplatte zu klein oder voll? Abgesehen davon unterliegt die Datei der Log-Rotation des Systems, d.h. Logs werden automatisch archiviert, rotiert und gelöscht.
Gruß, noisefloor
warum? Ist deine Festplatte zu klein oder voll? Abgesehen davon unterliegt die Datei der Log-Rotation des Systems, d.h. Logs werden automatisch archiviert, rotiert und gelöscht.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 13116
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Die Festplatte beim Raspi ist ja üblicherweise eine SD-Karte. Wobei ich da auch erst einmal schauen würde ob das Log überhaupt dauerhaft gespeichert wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Das geht zum Beispiel, in dem man die Dateideskriptoren vertauscht und dann nach z.B. awk piped und damit die timestamps davor schreibt. Das ist aber ziemliches Gebastel und nicht empfehlenswert. Daher würde ich mich __deets__ Vorschlag anschließen.noisefloor hat geschrieben: ↑Sonntag 9. Dezember 2018, 19:46 zu 2: mit Umleitungen AFAIK gar nicht. ABER wenn du das Skript über systemd startest, landet die Fehlermeldung im Journal von systemd und da sind immer Zeitstempel dabei.
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
@ deets
Wie kann ich einen Programmierfehler abfangen ? Ich ersetze im laufenden Betrieb (allerdings noch in der Testphase) Skripte, weil ich mir den "offline"-Test sparen möchte.
Danke auch an die anderen Beiträge. Vielleicht kann man das Intervall der Log-Rotation beeinflusen.
maksimilian
Wie kann ich einen Programmierfehler abfangen ? Ich ersetze im laufenden Betrieb (allerdings noch in der Testphase) Skripte, weil ich mir den "offline"-Test sparen möchte.
Danke auch an die anderen Beiträge. Vielleicht kann man das Intervall der Log-Rotation beeinflusen.
maksimilian
- __blackjack__
- User
- Beiträge: 13116
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@maksimilian: Wenn der Programmierfehler nicht zu einer Ausnahme führt, dann kannst Du den gar nicht abfangen. Wenn man das könnte, wäre es ja möglich grundsätzlich alle Fehler zu finden und damit 100% fehlerfreie Software zu schreiben, egal wie gross das Projekt wäre.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Ich bin mir nicht so sicher, was du da machst - klingt falsch. Aber wie dem auch sei: wenn du deine Skripte sauber strukturierst, dann kannst du auf oberster Ebene sowas machen:maksimilian hat geschrieben: ↑Montag 10. Dezember 2018, 12:21 @ deets
Wie kann ich einen Programmierfehler abfangen ? Ich ersetze im laufenden Betrieb (allerdings noch in der Testphase) Skripte, weil ich mir den "offline"-Test sparen möchte.
Code: Alles auswählen
def main():
.... # setup logging
try:
rufe_die_eigentliche_funktionalitaet()
except: # hier eine der ausnahmen, in denen ein nacktes except erlaubt ist
logging.exception("fehler") # stacktrace wird automatisch angefuegt
-
- User
- Beiträge: 86
- Registriert: Freitag 2. November 2018, 20:59
Danke für Eure Bemühungen. Ich muss selbst mehr in Python einsteigen und evtl. später zu meiner Frage zurückkehren.
maksimilian
maksimilian