bashスクリプトのsdterrをコンソールとファイルにリダイレクトするにはどうすればよいですか? 私は使っている:
exec 2>> myfile
それをmyfileに記録します。コンソールにもログを記録するように拡張する方法は?
例えば:
exec 2>&1 | tee myfile
またはあなたが使用することができますtail -f
$ touch myfile
$ tail -f myfile &
$ command 2>myfile
出力をプロセスにリダイレクトし、そのプロセスで使用できtee
ます。
#!/usr/bin/env bash
exec 2> >( tee -a err.log )
echo bla >&2
バックグラウンドで別のコマンド (cat など) でそのファイルを開いてみてください。
exec 2>> myfile
cat myfile & >&2
CAT_PID=$!
... # your script
kill $CAT_PID
fifoを作成できます
$ mknod mypipe p
ティーに fifo から読み取らせます。stdout と指定したファイルに書き込みます
$ tee myfile <mypipe &
[1] 17121
コマンドを実行し、stderr を fifo にパイプします。
$ ls kkk 2>mypipe
ls: cannot access kkk: No such file or directory
[1]+ Done tee myfile < mypipe