![如何通过串行控制台以分离模式运行 GNU 屏幕并保存输出?](https://linux22.com/image/125349/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E4%B8%B2%E8%A1%8C%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%BB%A5%E5%88%86%E7%A6%BB%E6%A8%A1%E5%BC%8F%E8%BF%90%E8%A1%8C%20GNU%20%E5%B1%8F%E5%B9%95%E5%B9%B6%E4%BF%9D%E5%AD%98%E8%BE%93%E5%87%BA%EF%BC%9F.png)
我想使用 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 filename
screen
看到logfile flush NN
改变这一点。
-X
向正在运行的 发送命令screen
,并且stuff
,“填充”给定字符串作为当前窗口中的输入。