让我先说“我不是程序员”。
我有一个脚本,我执行该脚本以在测试期间在存储阵列上创建可用空间。该脚本按设计工作,但是我在监视进度时遇到问题。我从主机(主)执行脚本。主机在后台对worker执行DD命令。每个工作人员都定义了多个SD。命令结构如下:
ssh root@worker1 dd if=/dev/zero of=/dev/sdb bs=1G count=256 &
ssh root@worker1 dd if=/dev/zero of=/dev/sdc bs=1G count=256 &
ssh root@worker2 dd if=/dev/zero of=/dev/sdb bs=1G count=256 &
ssh root@worker2 dd if=/dev/zero of=/dev/sdc bs=1G count=256 &
ssh root@worker3 dd if=/dev/zero of=/dev/sdb bs=1G count=256 &
ssh root@worker3 dd if=/dev/zero of=/dev/sdc bs=1G count=256 &
ssh root@worker4 dd if=/dev/zero of=/dev/sdb bs=1G count=256 &
ssh root@worker4 dd if=/dev/zero of=/dev/sdc bs=1G count=256 &
这种方法效果很好,我在后端存储上获得了出色的写入吞吐量。问题是我需要知道这些过程何时完成。完成后,我需要执行测试的下一阶段。
理想情况下,我需要一种方法来持续监控工人的DD流程并提供进度。当它们全部完成后,脚本将退出,下一阶段的测试应该开始。
更新***
我从使用DD切换到现在使用blkdiscard。我想要做的事情要快得多。新的命令结构如下所示。
ssh root@worker1 blkdiscard -o 256G -l 256G -p 1G /dev/sdb &
ssh root@worker1 blkdiscard -o 256G -l 256G -p 1G /dev/sdc &
如果这有助于其他任何人。
答案 0 :(得分:1)
由于@shellter和我找到的另一篇文章,我能够解决这个问题。我没有等待,而是使用上一个运行命令的进程ID。
{{1}}
然后结果是消息:准备数组以进行快照测试,最后使用旋转光标。
答案 1 :(得分:0)
如果在命令末尾添加双&符号,则在第一个命令完成后将启动写入命令。
示例:
echo something && sleep 5 && echo anotherthing &