保存“屏幕”(程序)输出到一个文件
我需要将整个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
。