如何同步记录 stderr 和 stdout,但仅将 stderr 打印到屏幕?
这是我经常尝试做的一项任务。 我想将 stderr 和 stdout 记录到日志文件中。但我只想打印到控制台 stderr。
我尝试过使用 tee,但是一旦我使用“2>&1”合并了 stderr 和 stdout。由于我的两个管道已合并,我无法再将标准输出打印到屏幕上。
这是我尝试过的一个简单示例
。三通-a日志2>&1。 现在我将 stderr 和 stdout 都发送到日志和屏幕。
有什么想法吗?
根据对该网站的一些阅读,有人提出了这个问题。 写入 STDOUT 和 STDOUT STDERR 到日志文件,也将 STDERR 写入屏幕
还有一个非常相似的问题: 同步保存stdout、stderr和stdout+stderr
但是他们都不能将 stdout+stderr 重定向到日志,将 stderr 重定向到屏幕,同时将 stdoud 和 stderr 同步写入日志文件。
This is a task that I try to do pretty often.
I want to log both stderr and stdout to a log file. But I only want to print to console stderr.
I've tried with tee, but once I've merge stderr and stdout using "2>&1". I can not print stdout to the screen anymore since both my pipes are merged.
Here is a simple example of what I tried
./dosomething.sh | tee -a log 2>&1.
Now I have both stderr and stdout to the log and the screen.
Any Ideas?
Based on some reading on this web site, this question has been asked.
Write STDOUT & STDERR to a logfile, also write STDERR to screen
And also a question very similar here:
Save stdout, stderr and stdout+stderr synchronously
But neither of them are able to redirect both stdout+stderr to a log and stderr to the screen while stdoud and stderr are synchronously written to the log file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我能够在 bash 中正常工作:
这在 zsh 中无法正常工作(提示符不会等待进程退出),并且在 dash 中根本不起作用。一个更可移植的解决方案可能是编写一个简单的 C 程序来完成它。
I was able to get this working in bash:
This does not work correctly in zsh (the prompt does not wait for the process to exit), and does not work at all in dash. A more portable solution may be to write a simple C program to do it.
我设法在 bash 中使用这个脚本来完成这个工作。
输出的顺序被保留。使用此脚本,进程可以正确结束。
注意:我使用不带参数的 grep 和 stat 来生成标准输出。
I managed to get this working with this script in bash.
The order of the output is preserved. With this script the process ends correctly.
Note: I used grep and stat without parameter to generate stdout.