在Linux上使用Bash将所有输出重定向到文件?

参见英文答案 > How can I redirect and append both stdout and stderr to a file with Bash?                                    7个
我试图将命令行程序的所有输出重定向到文件.我正在使用Bash.一些输出被定向到文件,但是一些仍然出现在终端中并且不存储到文件中.

这里描述了类似的症状:

Redirect all output to file

但是我尝试了所提出的解决方案(捕获stderr)但没有成功:

<cmd> <args> > stdout.txt 2> stderr.txt

文件stderr.txt已创建但为空.

可能的线索是命令行程序是与同一台机器上的服务器通信的客户端.可能有些输出来自服务器.

有没有办法捕获终端的所有输出,无论其来源如何?

编辑:

我已经确认缺少的输出是由服务器生成的.在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出传输到文件.这引发了有关如何捕获服务器输出的问题,但这是一个不同的问题.

解决方法:

如果服务器是在同一个终端上启动的,那么它就是服务器的stderr,可能是写入终端并且你没有捕获它.

捕获所有内容的最佳方法是运行:

script output.txt

在启动服务器或客户端之前.这将启动一个新的shell,所有终端输出都重定向输出output.txt以及终端.然后从该新shell中启动服务器,然后启动客户端.您在屏幕上看到的所有内容(您的输入和从该shell中写入终端的所有内容的输出)都将写入该文件.

完成后,键入“exit”以退出脚本命令运行的shell.

上一篇:Supervisor进程守护监控


下一篇:如何play billard