解決策 1:
スクリプトの出力を、現在の日付と時刻をプレフィックスとしてループに通すことができます:
./script.sh | while IFS= read -r line; do printf '%s %s\n' "$(date)" "$line"; done >>/var/log/logfile
これを頻繁に使用する場合は、ループを処理する bash 関数を簡単に作成できます。
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
解決策 2:
ts
を参照 Ubuntu moreutils
から パッケージ:
command | ts
または、$command
の場合 自動バッファリングを行います (expect-dev
が必要です) パッケージ):
unbuffer command | ts
解決策 3:
日付 コマンドはその情報を提供します
date -u
Sat Sep 10 22:39:24 UTC 2011
できるように
echo $(date -u) "Some message or other"
それはあなたが望んでいたものですか?
解決策 4:
エコーするだけです コマンドはログファイルに出力します。つまり、
echo "`date -u` `./script.sh`" >> /var/log/logfile
それは本当にうまくいきます:)
例:
[[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]]$
解決策 5:
config.sh
を作る ファイル
#!/usr/bin/env bash
LOGFILE="/path/to/log.log"
TIMESTAMP=`date "+%Y-%m-%d %H:%M:%S"`
ログファイルに送信する必要がある場合
#!/usr/bin/env bash
source /path/to/config.sh
echo "$TIMESTAMP Say what you are doing" >> $LOGFILE
do_what_you_want >> $LOGFILE
ログ ファイルは次のようになります
2013-02-03 18:22:30 Say what you are doing
日付順で簡単にソートできます