Cron sendet die Ausgabe an einen Mailer. Wenn Sie die Ausgabe in einem Terminal anzeigen möchten, können Sie sich in einer Datei anmelden und mit tail -f die Ausgabe in dem Terminal anzeigen, für das Sie die Ausgabe anzeigen möchten
In eine Datei einloggen
- Die einfachste Antwort ist, sich direkt in eine Datei mit einem crontab-Eintrag wie folgt einzuloggen:
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Alternativen zur Protokollierung:
- Wenn es sich bei Ihrem Programm um einen Scrip handelt, in den geschrieben werden kann, können Sie ihn ändern, um die Ausgabe in eine Protokolldatei mit umzuleiten.
echo output > log.txt
oder Sie können ein unten beschriebenes Wrapper- Skript verwenden.
- Wenn Ihr Programm binär oder auf andere Weise nicht beschreibbar ist, müssen Sie ein Wrapper- Skript schreiben , um die Ausgabe in eine Datei zu erfassen.
Beispielprogramm und Wrapper-Skript:
$ cat program.sh wrapper.sh
#!/bin/bash
# sample program
echo "arg 1=$1 arg2=$2 arg3=$3"
echo "sample error" >&2
#!/bin/bash
# sample wrapper
exec ./program.sh "$@" >log.txt 2> error.txt
Beispiellauf 1:
$ ./wrapper.sh 1 2 3 ; cat error.txt log.txt
sample error
arg 1=1 arg2=2 arg3=3
Beispiellauf 2:
$ ./wrapper.sh "A B C" D E ; cat error.txt log.txt
sample error
arg 1=A B C arg2=D arg3=E
Ausgabe im Terminal anzeigen:
Nachdem Sie in einem beliebigen Terminal sowohl Standard- als auch Standardfehler in einer Datei abgemeldet haben, können Sie tail -f
eine oder beide Dateien wie tail -f log.txt
oder tail -f log.txt error.txt
so ausführen , dass tail die Datei (en) auf Änderungen überwacht bzw. eher befolgt. Schwanz-Manpage
$ tail -f log.txt error.txt
==> log.txt <==
arg 1=1 arg2=2 arg3=3
==> error.txt <==
sample error
Protokolldateien, die anschließend angehängt werden:
Wenn später entweder log.txt oder error.txt von Ihrem Programm oder einem anderen Terminal angehängt werden $ echo "more output" >> log.txt
, wird die Ausgabe auf dem laufenden Terminal angezeigt$ tail -f log.txt error.txt
==> log.txt <==
more output
Darüber hinaus $ echo code red >> error.txt
ergibt sich:
==> error.txt <==
code red