保存“屏幕”(程序)输出到一个文件

我需要将整个screen输出保存到一个文件,以检查所有的内容。 原因是我正在通过串口卸载闪存,用屏幕来连接它。 我想保存到一个文件来检查内存结构。

我试过了 :

 $: screen /dev/ttyUSB0 115200 >> foo.txt $: screen /dev/ttyUSB0 115200 | tee foo.txt 

我也试过从屏幕上使用bufferfile,但我不明白如何使用它。

有一个简单的方法吗?

有一个用于logging的命令行选项。 输出保存到screenlog.n文件中,其中n是屏幕的编号。 从屏幕的手册页:

'-L'告诉屏幕打开窗口的自动输出logging。

您也可以使用Control-a + H将logging保存到screenlog.n文件中。 再一个Control-a + Hclosures。

Ca H:开始/结束将当前窗口logging到文件“screenlog.n”。

对于macterminal:

 script -a -t 0 out.txt screen /dev/ttyUSB0 115200 

细节

  • 内置的应用程序script “做terminal会话的打字稿”
  • -a附加到输出文件
  • 写到输出文件之间的-t 0时间是0秒,所以每个新字符都会更新out.txt
  • out.txt只是输出文件的名称
  • screen /dev/ttyUSB0 115200 – 连接到外部设备的问题命令

您可以使用tail来查看文件正在更新

尾巴-100 out.txt

所选答案在多个会话中运行得并不顺利,并且不允许指定自定义日志文件名称。

对于多个屏幕会话,这是我的公式:

1)为每个进程创build一个configuration文件:

 logfile test.log logfile flush 1 log on logtstamp after 1 logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012" logtstamp on 

如果您想“即时”执行此操作,则可以自动更改logfile\012表示“新行”,因为使用\n将在日志文件: source上打印。

2)用“-c”和“-L”标志开始你的命令:

 screen -c ./test.conf -dmSL 'Test' ./test.pl 

而已。 在第一次刷新后你会看到“test.log”:

 ... 6 Something is happening... [ test.pl: 2016-06-01 13:02:53 ] 7 Something else... [ test.pl: 2016-06-01 13:02:54 ] 8 Nothing here [ test.pl: 2016-06-01 13:02:55 ] 9 Something is happening... [ test.pl: 2016-06-01 13:02:56 ] 10 Something else... [ test.pl: 2016-06-01 13:02:57 ] 11 Nothing here [ test.pl: 2016-06-01 13:02:58 ] ... 

我发现,即使当“login”在configuration文件上时,“-L”仍然是必需的。

我无法find屏幕使用的时间格式variables(如%m)的列表。 如果您有这些格式的链接,请将其张贴在下面。

**额外**

如果你想“在飞行中”,你可以使用这个脚本:

 #!/bin/bash if [[ $2 == "" ]]; then echo "Usage: $0 name command"; exit 1; fi name=$1 command=$2 path="/var/log"; config="logfile ${path}/${name}.log logfile flush 1 log on logtstamp after 1 logtstamp string \"[ %t: %Y-%m-%d %c:%s ]\012\" logtstamp on"; echo "$config" > /tmp/log.conf screen -c /tmp/log.conf -dmSL '$name' $command rm /tmp/log.conf 

要使用它,请保存(screen.sh)并设置+ x权限:

 ./screen.sh TEST ./test.pl 

…将执行./test.pl并在/var/log/TEST.log中创build一个日志文件

在Unix下的'脚本'命令应该做的。 只要在新的控制台开始运行,你应该是好的。

以下可能是有用的(testing:Linux / Ubuntu 12.04):

 cat /dev/ttyUSB0 

使用上述,你可以做所有你需要的方向。 例如,要将输出转储到您的控制台,同时保存到您的文件,你会做:

 cat /dev/ttyUSB0 | tee console.log 

Ctrl + A然后Shift + H为我工作。 程序仍在运行时,您可以查看文件screenlog.0