如何缓冲 PTS?

如何缓冲 PTS?

我正在通过 libvirt 使用 LXC 容器构建一个系统,并且我正在尝试记录/转发容器的stdout.

创建新域时,会创建一个伪 TTY /dev/pts/*,我可以使用 libvirt 的 : 将 pts 附加到特定的 LXC容器virshvirsh -c lxc:/// ttyconsole <domain name>

由于 pts 是一个数据流,因此我尝试screen在启动容器后尽快以守护程序模式附加 a ,virsh然后使用 bash 脚本调用上述命令screen

CT_PID=$(virsh -c lxc:/// ttyconsole $domain)
screen -dmS my_task $CT_PID

但对于大多数任务来说,命令流太慢,并且一些内容在screen附加之前通过 pts 流式传输,因此肯定会丢失。

如何缓冲 libvirt 创建的 pts 设备的输出而不丢失任何数据?

答案1

对于其他 libvirt 驱动程序,您可以尝试使用不同的console type=值,例如file,但lxc驱动程序需要pty.其他驱动支持virsh start --paused但不支持lxc。可能virsh start紧随其后virsh pause会快一点,但仍然很激烈

相关内容