当前位置: 首页 > 面试题库 >

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

乜思淼
2023-03-14
问题内容

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

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

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

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

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

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

编辑:

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


问题答案:

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

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

script output.txt

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

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



 类似资料:
  • 问题内容: 我知道在Linux中,要将输出从屏幕重定向到文件,可以使用或。但是,我不确定为什么部分输出仍会输出到屏幕上而不写入文件。 有没有办法将所有输出重定向到文件? 问题答案: 该部分已写入stderr,用于重定向它。例如: 或者,如果您要在同一文件中: 注意:这在(ba)sh中有效,请检查您的shell语法是否正确

  • 问题内容: 我正在AIX 6上工作,在KIX Shell上运行Java命令,并且正在尝试调试类加载问题。我放了-verbose:class来打印加载的类,然后>> / home / user / log.log将控制台放到一个文件中。已创建log.log文件,但其大小为零。文件不包含任何信息,所有详细信息都在一闪而过。 问题答案: 也尝试重定向: 您的Java代码可能正在编写您的命令未重定向的信息

  • 问题内容: 我有一个要在IPython中运行的Python脚本。我想将输出重定向(写入)到文件,类似于: 当我在IPython中运行脚本时如何执行此操作,例如 有一个较旧的页面描述了可以编写的用于执行此操作的函数,但是我相信现在有一种内置的执行方法,我只是找不到。 问题答案: IPython拥有自己的上下文管理器来捕获stdout / err ,但是它不重定向到文件,而是重定向到对象: 并且此功能

  • 问题内容: 我C编码的一个基本的壳,用于执行基本命令它会执行命令,,等。 我想在我的外壳中执行以下命令。喜欢 ; 这将给我包含过程输出的文件。我找到了一个解决方案,它正在像这样更改shell中的命令。在这种情况下,它将更改为。但是此过程会将输出也提供给文件和终端。如何在终端中停止打印输出。 还是有比使用tee命令更好的解决方案。提前致谢… 问题答案: 这是我用dup2测试的结果 更微妙的一点是在正

  • 问题内容: 关于在Linux上计时程序的一个小问题:time命令允许测量程序的执行时间: 哪个工作正常。但是,如果我尝试将输出重定向到文件,它将失败。 我知道还有其他一些带有选项-o的时间实现,但是我的问题是关于没有那些选项的命令。 有什么建议么 ? 问题答案: 尝试 将“时间”的STDERR和您的命令组合到time.txt中 或使用 将来自“睡眠”的STDERR放入文件“ sleep.stder

  • 问题内容: 我正在写一个简单的基于PHP的MVC-ish框架。我希望该框架能够安装在任何目录中。 我的PHP脚本抓取了请求uri并将其分为多个部分。它使段1成为控制器,而段2成为动作。当我这样做时,一切都很好 它将转到特定的模块控制器和方法。现在,我有一个默认控制器,即home控制器,它位于文件夹home中。 ,它将显示403禁止,因为此文件夹确实存在,相反,它也应该返回如果我将框架安装在其他文件