-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

假设 bash 在 *nix 环境中,尝试将 stdout 和 stderr 都重定向到文本文件(注意与号):

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

更多信息在BASH Programming HOWTO 简介中。如果您在不同的环境中,请查看有关流重定向的文档。

--

根据文档

请注意,innobackupex 的 STDERR 没有写入任何文件。您必须将其重定向到一个文件,例如 innobackupex OPTIONS 2> backupout.log。

它将 stderr 重定向到一个文件。OP 指出(在下面的评论中)重定向 stderr 和 stdout 没有按预期工作。

于 2012-12-06T19:54:17.773 回答
0

在那里,它现在应该同时执行,即打印到 STDOUT 并写入 Log-

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 回答