私のスクリプトのすべての出力と日付を記録します。

私のスクリプトのすべての出力と日付を記録します。

出力を返すサードパーティで複数の異なるスクリプトを実行するrun.shがあります。私のrun.shには有益なエコ情報もあります...

特定のプロセスの速度も確認したいので、各コマンドの日付とともにすべてを記録することをスクリプトの上部に追加したいと思います。 teeとスクリプトがこれを行うことができることを確認しました。何度も試してみましたが、お使いのコンピュータにteeがインストールされておらず(簡単にインストールできないクラスタです)、受け取ったスクリプトを使用しています。

Script started, file is log.txt
Script started, file is log.txt
Script started, file is log.txt
Script started, file is log.txt
Script started, file is log.txt

編集する:

私はこれを行う方法を見つけました

exec >logfile.txt 2>&1

しかし、まだ各行の先頭にデータを追加する方法がわかりません。このアプローチでは、端末で出力を表示できなくなります。

ベストアンサー1

私は常にスクリプトの先頭に "echo_do"という小さな関数を追加し、次のようにその関数を介してコマンドを実行します。

#! /usr/bin/ksh

echo_do () {
  echo $(date) "$@"
  eval "$@"
}

echo_do pwd
echo_do sleep 3
echo_do "ls -l /tmp | wc"
echo_do sleep 3
echo_do "find /tmp | wc"

たとえば、独自の「Tシャツ」を作成することもできます。 "ティー.sh":

#! /usr/bin/ksh

IFS=""

if [ "X"$1 == "X-a" ]
then
  shift
else
  for OF in $@
  do
    > $OF
  done
fi

while read
do
  for OF in $@
  do
    echo "$REPLY" >> $OF
  done
  echo "<$REPLY>"
done

必要な場所に必要な時間を挿入してください。

おすすめ記事