保存“屏幕”(程序)输出到文件(Save “screen” (program) output to

2019-07-17 23:02发布

我需要的全输出保存screen到文件后检查所有的内容。
其原因是,我倾销闪存槽串行端口,使用的屏幕,它的接口。
我想将它保存到一个文件来检查内存结构。

我试过了 :

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

我也试着从屏幕使用bufferfile,但我不知道如何使用它。

有一个简单的方法是什么?

Answer 1:

有用于记录命令行选项。 输出被保存到文件screenlog.n,其中n是一个数字的画面。 从屏幕的手册页:

“-L”告诉屏幕打开自动输出日志记录的窗口。



Answer 2:

您也可以使用Control-A + H到测井公司保存到screenlog.n文件。 一个更控制-A + H关闭。

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



Answer 3:

为MAC终端:

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

细节

  • script内置的应用程序“使终端会话的打字稿”
  • -a追加到输出文件
  • -t 0写作之间的时间来输出文件是0秒,所以out.txt是为每一个新的char更新
  • out.txt只是输出文件名
  • screen /dev/ttyUSB0 115200 -命令从问题,用于连接到外部装置

那么你可以使用尾部看到该文件被更新

尾-100 out.txt



Answer 4:

下面的命令适用于丝网版02年6月4日

screen -L -Logfile Log_file_name_of_your_choice command_to_be_executed

从屏幕的手册页:

-Logfile file : By default logfile name is "screenlog.0". 
                You can set new logfile name with the "-Logfile" option.

您可以使用屏幕-version检查屏幕的现有版本。 您可以下载并安装从最新的屏幕版本https://www.gnu.org/software/screen/ 。



Answer 5:

所选答案不与多个会话中工作得非常好,并没有允许指定自定义日志文件名。

对于多屏会议,这是我的公式:

1)创建用于每个进程的配置文件:

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将打印在日志文件: 源 。

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 ]
...

我发现,“-L”时,“登录”是在配置文件仍然需要均匀。

我找不到通过屏幕使用的时间格式变量(如%M)的列表。 如果你有这些格式的链接,请张贴吼叫。

** ** EXTRA

如果你想这样做“对飞”,你可以使用这个脚本:

#!/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日志文件



Answer 6:

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



Answer 7:

Unix下的“脚本”的命令应该做的伎俩。 只需在新的控制台开始运行它,你应该是好的。



Answer 8:

下面可能是有用的(测试:Linux的/ Ubuntu的12.04):

cat /dev/ttyUSB0

使用上面,你可以然后做所有你需要重新方向。 例如,转储输出到控制台,同时保存到你的文件,你会怎么做:

cat /dev/ttyUSB0 | tee console.log


Answer 9:

这里有一个窍门:把它包在sh -c

screen sh -c './some-script 2>&1 | tee mylog.log'

其中2>&1重定向标准错误到stdout这样tee可以捕获和记录错误消息。



文章来源: Save “screen” (program) output to a file