2012-12-06 73 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

我嘗試了兩種解決方案,但在兩種情況下都沒有寫入日誌文件。 –

相關問題