2012-12-06 70 views
-1

我试图记录命令的输出:将perl中的STDOUT/STDERR重定向到一个txt文件?

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; 

,没有工作或者是因为命令执行完毕后,将只写入文件。我需要在命令运行时停止日志。

+2

你确定它不是写在STDERR呢? – Cfreak

+0

增加了shell&environment标签 – psema4

+0

增加了2>&1缺少的命令。 @Cfreak我不太确定。我如何发现?对不起,如果这是一个非常基本的问题,但有点新。 –

回答

2

在* nix的环境假设bash,试试标准输出和标准错误重定向到文本文件(注意符号):在Introduction to BASH Programming HOWTO

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

更多信息。如果您处于不同的环境中,请检查它是否为流重定向文档。

-

根据the documentation

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

将stderr重定向到文件。 OP笔记(在下面的评论中)重定向stderr和stdout不能按预期工作。

+0

我试过你的解决方案,它仍然将它打印到输出而不是打印到文件。 –

+0

我以前走过这条路,它可以让我非常沮丧,我知道。你的环境是什么样子?你在Linux上使用Bash吗? – psema4

+0

刚刚在文档中注意到了一行 - 您可以尝试使用2> log_inc1.txt并查看它是否写入文件? – psema4

0

在那里,它现在应该做的,即都打印出标准输出和写入对数

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 
+0

我尝试了两种解决方案,但在两种情况下都没有写入日志文件。 –

相关问题