如何通过串行控制台以分离模式运行 GNU 屏幕并保存输出?

如何通过串行控制台以分离模式运行 GNU 屏幕并保存输出?

我想使用 GNU screen 通过串行控制台以分离模式运行单个命令,并将其输出保存到运行 screen 的主机上的日志文件中。基本上,非交互式相当于以下操作:

screen /dev/ttyUSB0 115200 # connect to serial console "/dev/ttyUSB0" using speed "115200"
ctrl+a H # start logging
some command
ctrl+a k y # quit

我知道如何在当前 shell 中以分离模式运行单个命令:

screen -d -m -L some command
# output is saved to screenlog.0

但我不明白如何在连接到串行控制台的同时做同样的事情。

答案1

我无法在串行端口上正确测试它,但我认为这可能有效:

$ screen -S serial -L -d -m /dev/ttyUSB0
$ screen -S serial -X stuff 'some command\n'

我的版本screen接受 的参数-L,即日志文件的名称。显然并非所有版本都如此。设置日志文件名的另一种方法是 with (如果可行的话)。在写入之前将输出缓冲一段时间。默认情况下超时为 10 秒,但是screen -S serial -X logfile filenamescreen看到logfile flush NN改变这一点

-X向正在运行的 发送命令screen,并且stuff“填充”给定字符串作为当前窗口中的输入

相关内容