这是我经常尝试做的任务 . 我想将stderr和stdout都记录到日志文件中 . 但我只想打印到控制台stderr .
我试过tee,但是一旦我使用“2>&1”合并了stderr和stdout . 我不能再将stdout打印到屏幕上,因为我的两个管道都已合并 .
这是我尝试过的一个简单例子
./dosomething.sh | tee -a log 2>&1 . 现在我有stderr和stdout到日志和屏幕 .
有任何想法吗?
基于对本网站的一些阅读,已经提出了这个问题 . Write STDOUT & STDERR to a logfile, also write STDERR to screen
还有一个非常相似的问题:Save stdout, stderr and stdout+stderr synchronously
但是当stdoud和stderr同步写入日志文件时,它们都无法将stdout stderr重定向到日志和stderr到屏幕 .
2 回答
我能够在bash中使用它:
这在zsh中无法正常工作(提示不等待进程退出),并且在dash中根本不起作用 . 更便携的解决方案可能是编写一个简单的C程序来完成它 .
我设法在bash中使用此脚本 .
保存输出的顺序 . 使用此脚本,过程正确结束 .
注意:我使用grep和stat without parameter来生成stdout .