-1

コマンドの出力をログに記録しようとしています:

innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO > $PATH_TO_LOG/log_inc1.txt 2>&1;

ただし、ファイルに書き込むのではなく、STDOUT に出力します。

これは機能し、ファイルに記録されます:

innobackupex $DB_USER_INFO $FULL_BACKUP_FOLDER $SLAVE_INFO > $PATH_TO_LOG/log_full.txt 2>&1;

ただし、これはファイルに記録されません。

innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO > $PATH_TO_LOG/log_inc1.txt 2>&1;

私が試した他の解決策は次のとおりです。

open (INC1_RESULT,">$PATH_TO_LOG/log_inc1.txt");
my $incr1_backup_result = `innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO`;
print INC1_RESULT $incr1_backup_result;
close INC1_RESULT;

コマンドの実行が完了した後にのみファイルに書き込むため、これも機能しませんでした。コマンドの実行中にログを追跡する必要があります。

4

2 に答える 2

2

*nix 環境の bash を想定して、stdout と stderr の両方をテキスト ファイルにリダイレクトしてみてください (アンパサンドに注意してください)。

innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO &> $PATH_TO_LOG/log_inc1.txt

詳細については、BASH プログラミングの概要 HOWTO を参照してください。別の環境にいる場合は、ストリームのリダイレクトに関するドキュメントを確認してください。

--

ドキュメントによると:

innobackupex の STDERR はどのファイルにも書き込まれないことに注意してください。ファイルにリダイレクトする必要があります (例: innobackupex OPTIONS 2> backupout.log)。

stderr をファイルにリダイレクトします。OP は、(以下のコメントで) stderr と stdout の両方のリダイレクトが期待どおりに機能しないことを指摘しています。

于 2012-12-06T19:54:17.773 に答える
0

そこで、STDOUT への出力とログへの書き込みの両方を行う必要があります。

innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO | tee -a $PATH_TO_LOG/log_inc1.txt

または単にログに書き込む

innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO >> $PATH_TO_LOG/log_inc1.txt
于 2012-12-06T22:25:35.960 に答える