Soluzione 1:
Puoi reindirizzare l'output dello script attraverso un ciclo che antepone la data e l'ora correnti:
./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile
Se lo userai molto, è facile creare una funzione bash per gestire il ciclo:
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
Soluzione 2:
Vedi ts
da Ubuntu moreutils
pacchetto:
command | ts
Oppure, se $command
esegue il buffering automatico (richiede expect-dev
pacchetto):
unbuffer command | ts
Soluzione 3:
La data comando fornirà tali informazioni
date -u
Sat Sep 10 22:39:24 UTC 2011
quindi puoi
echo $(date -u) "Some message or other"
è quello che volevi?
Soluzione 4:
Puoi semplicemente fare eco il comando restituisce il file di registro. cioè
echo "`date -u` `./script.sh`" >> /var/log/logfile
Funziona davvero :)
Esempio:
[[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]]$
Soluzione 5:
Crea un config.sh
file
#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
Quando hai bisogno di inviare al file di log usa
#!/usr/bin/env bash
source /path/to/config.sh
echo "$TIMESTAMP Say what you are doing" >> $LOGFILE
do_what_you_want >> $LOGFILE
Il file di registro sarà simile a
2013-02-03 18:22:30 Say what you are doing
Quindi sarà facile ordinare per data