2010-07-09 38 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网站