gpt4 book ai didi

bash - Linux屏幕命令自动化

转载 作者:行者123 更新时间:2023-11-29 09:14:38 24 4
gpt4 key购买 nike

我正在使用 Linux screen 命令逐个运行不同的目录文件。我有 33 个 VM 文件夹,每个文件夹都包含要执行的图像。

Root directory      = /home/root/
VM folder available = /home/root/vm1,vm2,vm3...vm32

我必须同时运行所有虚拟机。出于这个原因,我正在使用 screen 命令。每个 screen 命令都将在 VM 上执行。它应该遍历所有 33 个 VM 文件夹并同时执行所有 33 个 VM 镜像。

Ctrl + A, C = new screen

以下是我的代码:

     for (( i=0; i<=33; i++))
do
screen
ls
vm1 vm2 vm3 vm4 ....vm33
cd vm1
ls
qemu-system-x86_64 -kernel image -hda core-image-full-cmdline-qemux86-64.ext3 -smp 4 -m 512 -nographic --append \
"root=/dev/hda console=ttyS0 rw mem=512M oprofile.timer=1"
cd ..
screen
qemu-system-x86_64 -kernel image -hda core-image-full-cmdline-qemux86-64.ext3 -smp 4 -m 512 -nographic --append \
"root=/dev/hda console=ttyS0 rw mem=512M oprofile.timer=1"
cd ..
.
.
.
done

QEMU它一启动就退出,screen 随之退出。我该如何解决这个问题?

最佳答案

当不带参数启动屏幕时,结果是打开交互式屏幕 session 。

一种实现您想要的方法是(假设当前工作目录是包含所有 VM 文件夹的目录):

for (( i=1; i<=33; i++ ))
do
cd vm${i}
screen -dmS vm${i} qemu-system-x86_64 -kernel image -hda core-image-full-cmdline-qemux86-64.ext3 -smp 4 -m 512 -nographic --append "root=/dev/hda console=ttyS0 rw mem=512M oprofile.timer=1"
cd ..
done

这里是解释:

对于所有 33 个虚拟机,进入 VM 文件夹,然后启动一个名为“vmX”的分离屏幕,以保持 QEMU 运行。

之后,您可以通过调用进入每个屏幕:

screen -r vmX

其中 X 是要控制的虚拟机的编号(例如使用 Ctrl + C qemu 或查看其 stdout/stderr 输出)。

例子:

screen -r vm1

关于bash - Linux屏幕命令自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com