標準出力と標準エラーを2つのファイルに送信する方法

標準出力と標準エラーを2つのファイルに送信する方法

次の構文を使用して、stdoutとstderrを$ logファイルに送信します。

log=/var/tmp/install.log
info=/tmp/info.log 

exec > $log 2>&1

標準出力と標準エラーも/tmp/info.logファイルにリダイレクトするにはどうすればよいですか?

ベストアンサー1

Bashを使用している場合は、プロセス置換を使用でき、次のことができますtee

exec &> >(tee "$log" > "$info")

これは、両方のストリームを交換プロセスにリダイレクトしてtee出力を"$log"stdinに送信し、出力を"$info".

/var/tmp/install.logそれ以外の場合は、コンテンツを次に送信するためにバックグラウンドプロセスを開始する必要があります/tmp/info.log

log=/var/tmp/install.log
info=/tmp/info.log 
exec > "$log" 2>&1
tail -n+1 -f "$log" > "$info" &

tailバックグラウンドで実行され、送信されたすべてのコンテンツをに/var/tmp/install.log送信します/tmp/info.log

おすすめ記事