复制目录时是否可以在 shell 脚本中显示正在运行的计时器?

复制目录时是否可以在 shell 脚本中显示正在运行的计时器?

所以我有一个 shell 脚本,基本上可以将一台服务器备份到另一台服务器。在此过程中,我必须将一个非常大的目录(140GB)复制到另一个位置,在 shell 脚本中,我希望它在复制文件时从 0:00 开始运行实时秒表类型计数器。

可能的?

编辑:这是不是一个进度条的想法:)只是一个简单的秒表计时器,这样你就可以看到已经过去了多少时间,而不是直到疼痛结束的时间:)

答案1

会使用rsync -av --progress而不是cp做你想做的事吗?

答案2

以防万一 David Kings rsync 解决方案不适合您或者您确实想在 bash 中执行此操作(为什么),您可以这样做:

#!/bin/bash
your_command_to_execute &
myPid=$!
sleepTime=5
while kill -0 "$myPid" 2> /dev/null
do
    # Sleep for the defined time
    sleep $sleepTime
    # And print the time since the script started in seconds
    echo -en "Runtime $SECONDS\033[0K\r"
done

您可能想使用一些东西来更好地格式化时间。
目前,脚本还打印自脚本启动以来的秒数,而不是自 cp 操作启动以来的秒数(如果您想更改此简单操作,则从当前值中减去循环之前的秒数$SECONDS

相关内容