bash – Linux屏幕命令自动化

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

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

我必须同时运行所有vm,因此使用screen命令.每个屏幕命令将执行1个vm.应该遍历所有33个vm文件夹并同时执行所有33个vm图像.

ctrl + A c = new screen

Follwing是我的代码

     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一启动就退出,并屏幕显示如何解决此问题

提前致谢.

最佳答案 在没有参数的情况下启动屏幕时,结果是打开交互式屏幕会话.

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

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
点赞