GNU/Linux >> Linux の 問題 >  >> Linux

タイムスタンプをbashスクリプトログに追加するには?

解決策 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

日付順で簡単にソートできます


Linux
  1. Bashスクリプトをデバッグする方法は?

  2. BashスクリプトにUnix/Linuxユーザーを追加する方法は?

  3. Bashスクリプトの変数に改行を追加する方法は?

  1. BashスクリプトをBashにパイプするときにパラメータを設定する方法は?

  2. Awk内のBashスクリプトでBash関数を呼び出す方法は?

  3. Bash スクリプト - ユーザー入力の読み取り方法

  1. MacOS のシェルスクリプトで DATE を UNIX TIMESTAMP に変換する方法

  2. パスに bash スクリプトを追加する

  3. bashスクリプトを使用してcrontabジョブをcrontabに追加するには?