如何在xterm中启用日志记录

4

如何在xterm中默认打开日志记录功能?

比如说,我有一个用C语言编写的程序,在Linux的默认bash终端中运行该程序会在xterm中输出结果。我想每次运行程序时都将显示在xterm中的输出保存到文件中。

我使用的是CentOS7_x86_64操作系统。


只需将程序的输出重定向到文件即可。 - user707650
实际上,这个程序是一个用于运行嵌入式软件模拟的开源项目。一开始,它提供了一个完整安装的 Virtual Box,每次我运行模拟时,xterm 窗口会自动显示输出结果,并在关闭 xterm 时生成输出文件。 - Aixeta
然后,我想尝试在我的Virtual Box环境(较新的操作系统)中安装该程序,但似乎xterm的配置有所不同。它无法生成与原始Virtual Box相似的xterm输出文件。 - Aixeta
2
很棒的问题 - 为什么被投票下来超出了我的理解。 - Owl
2
同时,几乎每个程序员在某个时候都需要记录一些内容或检查一些输出,因此它与编码直接相关。 - Owl
显示剩余2条评论
3个回答

4
在Windowmaker中:
在xterm窗口(终端文本)中按住 ctrl + 左键单击 ,单击“ log to file ”。
一个很酷的事情是当你在编码时,记录终端,然后当你查看Xterm日志时,你可以看到编码以快进方式进行。如果你想的话,可以录制视频。
请注意,xterm中还有其他菜单,可使用Ctrl+左键单击、Ctrl+中键单击、Ctrl+右键单击访问。
日志文件将位于启动Xterm的目录中,并且格式为: Xterm.log.<hostname> .<date> .<time> .log
这是一个非常好的问题,没有理由对这样的问题进行扣分。

1
这适用于Cygwin中的xterms。它比命令行开关更易用,后者需要浏览各种非常复杂的X窗口软件组件,以启动窗口管理器和启动终端。 - undefined

0

有两种方法可以实现:

  1. 使用 script

    xterm -e script mylogfile -c "someCommand -i input_file -o output_file -f someArg"
    
  2. 重定向到文件:

    xterm -e 'someCommand --arguments 2>&1> /path/to/mylogfile'
    

非常谨慎地使用 script。它在处理命令、管道或任何操作屏幕的内容方面存在显著的限制。它是为需要交互式会话的硬拷贝记录作为任务证明的学生而设计的,而不是用于常规重定向。 - David C. Rankin

0

我通常用 "terminal-window"、mrxvt、"hcm" 和 "pypty" 实现这个功能。

"terminal-window" 包装了 mrxvt,只是填充了一些命令行选项。mrxvt 是一个轻量级的、多标签的、非 Unicode 终端仿真器,与 xterm 类似。

"hcm" 是一个 GUI 工具,它可以轻松地在远程主机上运行 shell(或其他命令)。如果你愿意,它还可以启动一个带有远程 ssh 的 mrxvt,而不需要 GUI(使用 hcm-term)。

"pypty" 是一个 Python 编写的 /usr/bin/script 重新实现版本。它与 /usr/bin/script 没有太大区别,只不过它提供了一个 "日期文件模式",允许每天为伪终端创建一个文件。因此,如果你留下一个已登录的 shell 过夜,你就会得到每天一个文件,这样更容易找到你要查找的内容。

所有这些组合在一起,为您提供了非常方便的伪终端日志记录功能。命令在远程主机上运行,但在本地记录。只需启动一个 "fancy terminal-window"(或使用 hcm-term),屏幕上看到的所有内容以及控制字符(但不包括未显示的密码)都将被记录在 ~/.hcm/logs/<year>/<month>/<day>/* 下。

此外,如果您按mrxvt右下角的shell按钮,则会获得另一个ssh会话到同一远程主机,该会话也在本地记录(在~/.hcm/logs/下的不同文件中)。当我开始利用该功能时,我没有想到我会喜欢上它。

您可以从http://stromberg.dnsalias.org/~strombrg/hcm/获取它们。那里有一个视频展示了设置和入门有多容易。

顺便说一句,fancy terminal-window设置$PS0或“trap DEBUG”以提供命令启动时间和完成时间。这对事后分析非常有用。它是在不替换任何通常的bash启动文件的情况下完成的。

我编写了terminal-window、hcm和pypty,但不能为mrxvt负责。 :)

希望有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接