Lösung 1:
Sie können die Ausgabe des Skripts durch eine Schleife leiten, die das aktuelle Datum und die Uhrzeit voranstellt:
./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile
Wenn Sie dies häufig verwenden, ist es einfach, eine Bash-Funktion zu erstellen, um die Schleife zu handhaben:
adddate() {
while IFS= read -r line; do
printf '%s %s\n' "$(date)" "$line";
done
}
./thisscript.sh | adddate >>/var/log/logfile
./thatscript.sh | adddate >>/var/log/logfile
./theotherscript.sh | adddate >>/var/log/logfile
Lösung 2:
Siehe ts
von Ubuntu moreutils
Paket:
command | ts
Oder, wenn $command
puffert automatisch (benötigt expect-dev
Paket):
unbuffer command | ts
Lösung 3:
Das Datum Der Befehl liefert diese Informationen
date -u
Sat Sep 10 22:39:24 UTC 2011
damit Sie
könnenecho $(date -u) "Some message or other"
ist es das, was du wolltest?
Lösung 4:
Sie können einfach echo die Befehlsausgaben in die Protokolldatei. dh,
echo "`date -u` `./script.sh`" >> /var/log/logfile
Es funktioniert wirklich :)
Beispiel:
[[email protected]]$ ./script.sh
Hello Worldy
[[email protected]]$ echo "`date -u` `./script.sh`" >> logfile.txt
[[email protected]]$ cat logfile.txt
Mon Sep 12 20:18:28 UTC 2011 Hello Worldy
[[email protected]]$
Lösung 5:
Machen Sie eine config.sh
Datei
#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
Wenn Sie an die Protokolldatei senden müssen, verwenden Sie
#!/usr/bin/env bash
source /path/to/config.sh
echo "$TIMESTAMP Say what you are doing" >> $LOGFILE
do_what_you_want >> $LOGFILE
Die Protokolldatei sieht folgendermaßen aus
2013-02-03 18:22:30 Say what you are doing
So wird es einfach sein, nach Datum zu sortieren