2016-06-09 24 views
1

Ich habe Ubuntu-Server und ich habe einen Cron-Job, der Python-Skript ausgeführt wird. Ich weiß, ich kann stderr Ausgabe MAILTO= in Crontab bekommen. Ich weiß auch, dass die Standardausgabe von stdout und stderr zu einer Datei 2>&1 Umleitung ist. Hier kommt mein erstes Problem.Ausgabe Stderr von Cron zu Datei und E-Mail

Was auch immer ich verwendet habe ich Fehler /bin/sh: 1: Syntax error: Bad fd number. Nach ein paar Stunden wurde mir klar, dass es auf die SH-Version ankommt. Die einzige Möglichkeit, alles in eine Datei auszugeben, war die Verwendung dieses Befehls 00 00 * * * /usr/bin/python3 /data/script.py >& /data/logs/date +\%d_\%m_\%Y_out.log. Ich habe im Internet gefunden, dass es csh oder tcsh gehört. Ich bekomme es nicht, weil ich Bash auf meinem System verwende. Warum funktioniert die Standardumleitung wie >>/log.txt 2>&1 nicht für mich?

Mein zweites Problem ist, dass ich stdout und stderr in eine Datei schreiben und stederr über MAILTO weiter mailen möchte. Ich habe versucht, mit tee Befehl zu spielen, aber ohne Erfolg. Vielen Dank für Ihre Hilfe

Antwort

1

Sie können Variablen am Anfang Ihrer Crontab-Datei hinzufügen, um sicherzustellen, dass die richtige Shell verwendet wird. Als zweites Problem können Sie den Befehl "tee" verwenden, der alles von STDIN nach STDOUT sendet und auch in einer Datei speichert:

+0

Vielen Dank für Ihre Antwort. Das Hinzufügen von Variablen hat geholfen, aber Ihre Lösung gibt alles in eine Datei und auch in eine Mail aus. Ich will alles in einer Datei und einfach stderr in Email. Ich weiß nicht, ob das überhaupt möglich ist –