求助:如何将sudo screen命令输出写入.txt文件?重定向方式无效
解决方案
方法1:使用Screen内置日志功能(推荐)
Screen自带原生日志记录功能,是适配性最好的方案,启动时添加对应参数即可:
- 生成默认日志文件(
screenlog.0):
sudo screen -L /dev/ttyUSB0 115200
- 自定义日志文件名:
sudo screen -L -Logfile serial_output.txt /dev/ttyUSB0 115200
日志会实时写入指定文件,退出Screen会话后记录自动停止。
方法2:用script命令捕获完整会话输出
script命令可以记录整个终端会话的所有交互内容,包括Screen的输出:
sudo script -c "screen /dev/ttyUSB0 115200" serial_output.txt
执行后会直接进入Screen会话,所有操作和设备输出都会被写入serial_output.txt,退出Screen后script自动停止记录。
方法3:在已运行的Screen会话中临时开启日志
如果已经进入Screen会话,无需重启即可开启日志:
- 按下快捷键
Ctrl + a(Screen的命令前缀) - 按下大写的
H
此时会在当前目录生成screenlog.0文件,再次执行Ctrl+a+H可停止日志记录。
为什么之前的重定向无效?
Screen是终端复用工具,它会直接接管终端设备进行交互,输出内容是直接发送到终端窗口而非进程的标准输出(stdout)。普通的>/>>重定向只能捕获进程向stdout/stderr输出的内容,因此无法抓取Screen的终端交互输出。
内容的提问来源于stack exchange,提问作者RS25
相关产品推荐
相关产品推荐

