Řešení 1:
Výstup skriptu můžete propojit smyčkou s předponou aktuálního data a času:
./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile
Pokud to budete často používat, je snadné vytvořit bash funkci pro zpracování smyčky:
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
Řešení 2:
Viz ts
z Ubuntu moreutils
balíček:
command | ts
Nebo, pokud $command
provádí automatické ukládání do vyrovnávací paměti (vyžaduje expect-dev
balíček):
unbuffer command | ts
Řešení 3:
Datum příkaz poskytne tyto informace
date -u
Sat Sep 10 22:39:24 UTC 2011
takže můžete
echo $(date -u) "Some message or other"
je to to, co jsi chtěl?
Řešení 4:
Můžete jednoduše echo výstup příkazu do souboru protokolu. tj.
echo "`date -u` `./script.sh`" >> /var/log/logfile
Opravdu to funguje :)
Příklad:
[[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]]$
Řešení 5:
Vytvořte config.sh
soubor
#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
Když potřebujete odeslat soubor protokolu, použijte
#!/usr/bin/env bash
source /path/to/config.sh
echo "$TIMESTAMP Say what you are doing" >> $LOGFILE
do_what_you_want >> $LOGFILE
Soubor protokolu bude vypadat takto
2013-02-03 18:22:30 Say what you are doing
Bude tedy snadné seřadit podle data
Jak získat adresu URL aktuálního repozitáře svn?
Zkontrolujte, zda je port otevřený nebo uzavřený na serveru Linux?