gpt4 book ai didi

bash - 监控远程DD操作并显示进度

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:35 25 4
gpt4 key购买 nike

首先让我说“我不是程序员”。

我有一个脚本,我执行该脚本以在测试期间在存储阵列上创建可用空间。该脚本按设计工作,但我在监控进度时遇到问题。我从主机(主机)执行脚本。主机在后台对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 &

如果这对其他人有帮助。

最佳答案

感谢@shellter 和我发现的另一篇文章,我能够解决这个问题。我没有等待,而是使用上一个运行命令的进程 ID。

#Execute blkdiscard on workers via remote SSH
ssh root@worker1 blkdiscard -o 256G -l 256G -p 1G /dev/sdb &
ssh root@worker1 blkdiscard -o 256G -l 256G -p 1G /dev/sdc &

# Process Id of the previous running command
pid=$!

# Spinning cursor string
spin='-\|/'

i=0
while kill -0 $pid 2>/dev/null
do
# Progress message
echo -ne "\033[2K\rPreparing array for snapshot testing ";

# Spinning cursor on same line
i=$(( (i+1) %4 ))
echo -ne "${spin:$i:1}"
sleep .1
done

然后最终结果是消息:准备阵列以进行快照测试,最后带有旋转光标。

关于bash - 监控远程DD操作并显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004924/

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