我正在尝试记录命令的输出:
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;
不起作用,因为它只会在命令完成执行后写入文件。我需要在命令运行时尾随日志。
答案 0 :(得分:2)
假设在* nix环境中使用bash,尝试将stdout和stderr重定向到文本文件(注意&符号):
innobackupex --incremental $INC1_BACKUP_FOLDER --incremental-basedir=$BASEDIR_FULL $SLAVE_INFO &> $PATH_TO_LOG/log_inc1.txt
Introduction to BASH Programming HOWTO中的更多信息。如果您处于不同的环境中,请查看有关流重定向的文档。
-
请注意,innobackupex的STDERR不会写入任何文件。您必须将其重定向到文件,例如,innobackupex OPTIONS 2> backupout.log。
将stderr重定向到文件。 OP注释(在下面的评论中)重定向stderr和stdout并没有按预期工作。
答案 1 :(得分: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