È possibile controllare lo stato di avanzamento dell'esecuzione del processo cp? Alcuni processi rispondono a vari segnali KILL in modo che tu possa controllare qual è il loro stato. So che posso eseguire cp con il parametro -v, ma se mi fossi dimenticato di farlo, cp è in esecuzione da molto tempo e voglio sapere quale file viene copiato o quanti sono già stati copiati.
Risposta accettata:
Sì, eseguendo stat sul file di destinazione e sul file locale e ottenendo una dimensione del file,
cioè stat -c "%s" /bin/ls
E ottieni la percentuale di dati copiati confrontando i due valori, il gioco è fatto
In un'implementazione molto semplice che sarà simile a questa:
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
}