set -x
を含むbashスクリプトがあります。このスクリプトのデバッグ出力とすべての出力をファイルにリダイレクトすることは可能ですか?理想的には、次のようなことをしたいと思います。
#!/bin/bash
set -x
(some magic command here...) > /tmp/mylog
echo "test"
を取得
+ echo test
test
標準出力ではなく、/ tmp/mylogに出力されます。
これは私がちょうどグーグルで調べたものであり、私はしばらく前にこれを使用して自分を覚えています...
Execを使用して、スクリプト内のすべてのコマンドの標準出力と標準エラーの両方をリダイレクトします。
#!/bin/bash
logfile=$$.log
exec > $logfile 2>&1
リダイレクトマジックの詳細については、 Advanced Bash Scripting Guide-I/O Redirection を参照してください。
ログファイル内のadditionの端末で出力とデバッグも表示する場合は、 redirect COPYのbashスクリプト自体からログファイルへのstdout 。
set -x
トレース出力の宛先を通常のSTDOUT
およびSTDERR
から独立して処理する場合は、set -x toの出力を格納する bashを参照してください。ログファイル 。
-x
出力はstderrに送られるため、ログに記録するには次のようにします。
set -x
exec 2>/tmp/mylog
私の場合、スクリプトは他の場所から複数回呼び出されていましたが、すべてが表示されていなかったため、代わりに追加を行いました。
exec 1>>FILENAME 2>&1
set -x
混乱を避けるため、実行する前に必ずFILENAMEを削除してください。
stderrおよびstdoutをリダイレクトするには:
exec &>> $LOG_FILE_NAME
ファイルに追加する場合。ファイルを上書きするには:
exec &> $LOG_FILE_NAME