一尘不染

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

linux

我试图将所有输出从命令行程序重定向到文件。我正在使用Bash。一些输出定向到文件,但是某些仍然出现在终端中,并且不存储到文件中。

但是,我尝试了建议的解决方案(捕获标准错误),但未成功:

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

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

可能的线索是,命令行程序是与同一台计算机上的服务器进行通信的客户端。可能某些输出来自 服务器

有没有办法捕获来自终端的所有输出,而不管其来源如何?

编辑:

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


阅读 365

收藏
2020-06-03

共1个答案

一尘不染

如果服务器是在同一终端上启动的,则可能是服务器的stderr被写入终端,而您没有捕获它。

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

script output.txt

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

完成后,键入“ exit”退出该script命令运行的shell 。

2020-06-03