Cp
如何查看執行cp的進度?
是否可以檢查執行 cp 程序的進度?一些程序響應各種 KILL 信號,以便您可以檢查它們的狀態。我知道我可以使用參數 -v 執行 cp,但是如果忘記這樣做,cp 執行了很長時間,我想知道正在複製哪個文件,或者已經複製了多少文件。
是的,通過在目標文件和本地文件上執行 stat 並獲取文件大小,
IE
stat -c "%s" /bin/ls
你通過比較這兩個值得到複製數據的百分比,就是這樣
在一個非常基本的實現中,如下所示:
function cpstat() { local pid="${1:-$(pgrep -xn cp)}" src dst [[ "$pid" ]] || return while [[ -f "/proc/$pid/fd/3" ]]; do read src dst < <(stat -L --printf '%s ' "/proc/$pid/fd/"{3,4}) (( src )) || break printf 'cp %d%%\r' $((dst*100/src)) sleep 1 done echo }
在最新版本的 Mac OS X 上,您只需點擊
CTRL
+T
即可查看進度。來自cp(1) 的 OSX 10.6 手冊頁:"If cp receives a SIGINFO (see the status argument for stty(1)) signal, the current input and output file and the percentage complete will be written to the standard output."
點擊
CTRL
+T
相當於在 BSD-ish 機器(包括 OSX)上使用 SIGINFO 向目前程序發出信號。這也適用於dd(1)。
我認為 Linux 沒有這種 SIGINFO 機制,並且在cp(1) 的 GNU 手冊頁中看不到任何關於可用於報告進度的信號的內容。