linux+ はログとコンソールに標準出力と標準エラーを記録します。

linux+ はログとコンソールに標準出力と標準エラーを記録します。

ログ=/tmp/log.txt

次の構文は、すべての標準出力と標準エラーをlog.txtファイルに書き込みます。

実行 > $log 2>&1

私たちが望むのは、stdoutとstderrをlog.txtに書き込み、stdout + stderrをコンソールに書き込むことです。

可能ですか?

ベストアンサー1

これを行うより簡単な方法があるかもしれませんが、一般的な解決策は次のとおりです。

#!/bin/bash

trap 'rm $TMP' 0
TMP=$(mktemp)
rm $TMP
mkfifo $TMP
tee < $TMP ${log:-/tmp/log.txt} &
exec > $TMP 2>&1

他のすべてのプロセスがfifoで読み書きできるため、ここに大きなセキュリティと信頼性の問題があることは言うまでもありません。この種のタスクを実行するには、スクリプトの出力をtee

おすすめ記事