如何将live-f1的输出写入文件


10

我打开终端并运行live-f1,它在终端(文本)中显示实时供稿,该供稿每秒钟更改一次。该程序正在运行(退出该程序)时,只能使用“ Enter”键。因此,您无法在控制台中输入其他任何内容。

我想将终端内容写入文件,就像每秒之后一样。

我该怎么做?

通过打开第二个控制台并使用一些命令?

无法使其与setterm -dump命令一起使用。

Answers:


8

live-f1就像top或一样,通过使用终端控制字符(ncurses)用新数据重画屏幕mtr。这就是为什么在重定向到文件或非终端设备时会看到所有这些垃圾的原因。

不幸的是,live-f1没有提供适当的输出来保存并稍后提取数据以进行统计等选择。如果仍要保存输出以供以后重播,则可以使用script

这将记录live-f1并创建两个文件,即打字稿和计时文件。

script -c live-f1 -t 2> timingfile

这将重播输出

scriptreplay timingfile

7

我使用几种方法将输出捕获到文件中,这可能对您有用。

script

这将创建一个子外壳并将所有输出放入其中。这样做script,然后进行任何操作,然后exit结束您的子shell,您的输出将在一个名为“ typescript”的文件中

tee

您可以将所有管道回显到其他地方。因此,您可以tee将标准输出关闭到文件中:

$ mycommand | tee myoutput

如果您还需要捕获标准错误,则将其重定向:

$ mycommand 2>&1 | tee myoutput

6

如何运行这样的程序:

program > /path/to/file

这会将的输出立即重定向program/path/to/file

并且,如果您希望将输出保存在终端中,并将其保存到文件中。签出bash中是否有一种方法可以重定向输出,但仍然可以将其转到stdout?


谢谢您的快速解答。这几乎可以正常工作,只有文件内容有点混乱。它应该以HTML格式显示,但是,当我打开文件时,出现了一些奇怪的符号,请参见屏幕截图:upload.ee/image/1223166/ss_01.png。程序的名称是live-f1。
古斯塔夫

看起来很有趣。您确定程序仅输出HTML吗?有动画或怪异的东西吗?
phunehehe

这只会重定向标准输出。是否也需要标准错误?
Faheem Mitha

2
@Gustav也有ANSI代码被困在那里。您的应用程序要么输出某种进度计数器(看起来像什么),要么为其输出着色,或者类似。如果有某种方法可以关闭此功能,则需要使用它来捕获干净的输出。但是,您的应用程序不会输出HTML,因此要捕获HTML,您将需要其他一些应用程序来转换输出。
马修·沙利

为什么要说它是HTML,因为我在一年前就可以使用它,但是重新格式化了我可以使用的磁盘。我的目标是将live-f1 feed中的Formula 1驾驶员位置保存到文件中。去年,我在第一个终端上运行live-f1程序,然后启动了第二个终端,并使用一些命令捕获了第一个终端屏幕并将其保存到文件中(从去年的文件复制:upload.ee/download/1223347 /0b6545ce227661452c8/html.log)。命令是这样的:tty“第一终端指针”“文件名”“间隔”
Gustav

3

您可以使用GNU屏幕及其日志记录功能。还要注意,该 logfile flush secs命令允许您控制将输出刷新到磁盘的频率。从屏幕用户手册中:

—命令:logfile flush secs

定义日志文件将获得的名称。默认值为“ screenlog。%n”。第二种形式更改在将日志文件缓冲区刷新到文件系统之前屏幕将等待的秒数。默认值为10秒。


我会调查一下。
古斯塔夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.