我正在通过 libvirt 使用 LXC 容器构建一个系统,并且我正在尝试记录/转发容器的stdout
.
创建新域时,会创建一个伪 TTY /dev/pts/*
,我可以使用 libvirt 的 : 将 pts 附加到特定的 LXC容器virsh
。virsh -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
会快一点,但仍然很激烈