Starten Sie das Python-Skript mit cron und geben Sie den Ausdruck in eine Datei aus [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Richtiger Weg, um eine Zeile in eine Datei zu schreiben? 10 Antworten

Ich starte ein Python-Skript mit cron wie folgt:

#Python script called every 3 minutes in case script crashes
*/3 * * * * /home/ubuntu/python_script.sh &

Und mein Skript hat mehrere Drucke zum Debuggen. Ich möchte diese Nachrichten in eine Datei drucken, zum Beispiel /home/ubuntu/Logs.txt

Mein Skript überprüft auch, ob der Python-Aufruf bereits ausgeführt wird, damit er nicht erneut gestartet wird:

#!/bin/bash
lines=$(ps -ef | grep python_script.py | wc -l)

if [ $lines -ne 2 ]; then
    python python_script.py &
fi

Wie drucke ich meine Nachrichten in diese Datei? Ich benutze Python 2.7

Update: Bearbeitet meinen Code mit den folgenden:

1) Fügte dies als erste Zeile meines Python-Skripts hinzu:

from __future__ import print_function

2) Öffnen Sie die Protokolldatei nach dem letzten Import und fügen Sie direkt danach einen Testdruck hinzu:

log = open("/home/ubuntu/Logs.txt", "w+")
print("Testing...", file = log)

Wenn ich es einfach vom Terminal aus starte, druckt es in die Datei fein. Aber wenn ich es mit cron plane, schreibt es nicht in die Datei.

Update 2: Stolperte über eine Lösung mit "Logger" -Befehl. In meinem Shell-Skript musste ich "2> & 1" (im Shell-Skript nicht crontab, wie von ElmoVanKielmo beschrieben) und "| logger &" hinzufügen. Die endgültige Lösung sieht folgendermaßen aus:

#!/bin/bash
lines=$(ps -ef | grep python_script.py | wc -l)

if [ $lines -ne 2 ]; then
    python python_script.py 2>&1 | logger &
fi

und es gibt alle Drucke in die Datei / var / log / syslog aus, was für mich gut genug ist.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage