[英]Bash script 'kill -0' option in while loop
我必須編寫bash腳本來擴展cp
從而提供復制速度和ETA。 在互聯網上,我找到了while kill -0 $pid; do
使用的腳本while kill -0 $pid; do
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`
通常,您指定要發送到進程的信號作為kill
的參數。 -0
有特殊含義-它不發送信號,它只是檢查進程是否仍在運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.