如何在xterm中默认打开日志记录功能?
比如说,我有一个用C语言编写的程序,在Linux的默认bash终端中运行该程序会在xterm中输出结果。我想每次运行程序时都将显示在xterm中的输出保存到文件中。
我使用的是CentOS7_x86_64操作系统。
如何在xterm中默认打开日志记录功能?
比如说,我有一个用C语言编写的程序,在Linux的默认bash终端中运行该程序会在xterm中输出结果。我想每次运行程序时都将显示在xterm中的输出保存到文件中。
我使用的是CentOS7_x86_64操作系统。
Xterm.log.<hostname> .<date> .<time> .log
。有两种方法可以实现:
使用 script
:
xterm -e script mylogfile -c "someCommand -i input_file -o output_file -f someArg"
重定向到文件:
xterm -e 'someCommand --arguments 2>&1> /path/to/mylogfile'
script
。它在处理命令、管道或任何操作屏幕的内容方面存在显著的限制。它是为需要交互式会话的硬拷贝记录作为任务证明的学生而设计的,而不是用于常规重定向。 - David C. Rankin我通常用 "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负责。 :)
希望有所帮助