我必须编写bash脚本,扩展cp
,提供复制速度和ETA。在互联网上,我发现使用while kill -0 $pid; do
循环的脚本。它对我有用,但我不能理解为什么它有效。 -0
选项的作用。
我的脚本就是这样:
#!/bin/bash
cp $1 $2 &
pid=$!
trap "kill $pid 2> /dev/null" EXIT
olddst_size=0
sleep 1
while kill -0 $pid 2> /dev/null; do
src_size=$(ls -l $1 | cut -d " " -f5)
dst_size=$(ls -l $2 | cut -d " " -f5)
diff_size=$(($src_size - $dst_size))
# Speed in MB/s
speed=$(bc -l <<< "scale=4;$(($dst_size-$olddst_size))")
olddst_size=$dst_size
#ETA
eta=$(bc -l <<< "scale=0;($diff_size/$speed)")
echo -ne " "\\r
echo -ne "Copying speed:" $speed "B/s" "ETA:" $eta "s"\\r
sleep 1
done
echo -ne " "\\r`
答案 0 :(得分:3)
通常,您指定要发送到进程的信号作为-0
的参数。 {{1}}具有特殊含义 - 它不会发送信号,只是检查进程是否仍在运行。