2010-07-09 65 views

回答

34
update-client 2>&1 | tee my.log 

2> & 1標準誤差重定向到標準輸出,和T發送其標準輸入到標準輸出和文件。

+1

您還可以追加日誌文件,按此處的說明,以及做其他的東西與三通:http://linux.101hacks.com/unix/tee-command-例子/ – thegeek 2010-07-12 08:18:09

4

只需使用尾部即可在文件更新時觀察文件。背景你在你上面的命令後,加入&執行該命令後,以上只是用

$ tail -f my.log 

它會不斷地更新原來的進程。 (注意它不會告訴你什麼時候文件已經完成運行,所以你可以輸出一些東西到日誌中來告訴你它已經完成了,Ctrl-c退出尾部)

+2

哇在這一個艱難的人羣。這個答案究竟有什麼錯誤? – Cfreak 2010-07-09 19:19:52

+2

在我看來,它比使用'tee'差幾千倍。 – 2010-07-09 21:16:55

+0

需要我在後臺運行進程 – 2012-08-19 19:10:44

4

另一個選擇是使用基於塊的輸出捕捉腳本(不知道這是否是正確的技術術語)。

#!/bin/bash 
{ 
    echo "I will be sent to screen and file" 
    ls ~ 
} 2>&1 | tee -a /tmp/logfile.log 

echo "I will be sent to just terminal" 

我想有更多的控制和靈活性 - 所以我更喜歡這種方式。

+0

謝謝,這工作完美 – wiak 2015-06-02 19:25:45

2

可以使用tee命令爲:

command | tee /path/to/logfile 

的equivelent沒有寫入殼將是:

command > /path/to/logfile 

如果要追加(>>)和顯示輸出在shell中,使用-a選項:

command | tee -a /path/to/logfile 

請注意管道只會捕捉stdout,錯誤爲std err沒有被三通管處理。如果你想記錄錯誤(從標準錯誤),用途:

command 2>&1 | tee /path/to/logfile 

這意味着:運行命令和重定向stderr流(2)到stdout(1)。這將通過三通應用程序傳遞給管道。

瞭解這個在askubuntu網站