参见英文答案 > How can I redirect and append both stdout and stderr to a file with Bash? 7个
我试图将命令行程序的所有输出重定向到文件.我正在使用Bash.一些输出被定向到文件,但是一些仍然出现在终端中并且不存储到文件中.
这里描述了类似的症状:
但是我尝试了所提出的解决方案(捕获stderr)但没有成功:
<cmd> <args> > stdout.txt 2> stderr.txt
文件stderr.txt已创建但为空.
可能的线索是命令行程序是与同一台机器上的服务器通信的客户端.可能有些输出来自服务器.
有没有办法捕获终端的所有输出,无论其来源如何?
编辑:
我已经确认缺少的输出是由服务器生成的.在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出传输到文件.这引发了有关如何捕获服务器输出的问题,但这是一个不同的问题.
解决方法:
如果服务器是在同一个终端上启动的,那么它就是服务器的stderr,可能是写入终端并且你没有捕获它.
捕获所有内容的最佳方法是运行:
script output.txt
在启动服务器或客户端之前.这将启动一个新的shell,所有终端输出都重定向输出output.txt以及终端.然后从该新shell中启动服务器,然后启动客户端.您在屏幕上看到的所有内容(您的输入和从该shell中写入终端的所有内容的输出)都将写入该文件.
完成后,键入“exit”以退出脚本命令运行的shell.
标签:bash,linux,stderr,stdout 来源: https://codeday.me/bug/20190928/1826706.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。