GNU/Linux >> Linux Esercitazione >  >> Linux

Come controllare lo stato di avanzamento dell'esecuzione di Cp?

È 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
}

Linux
  1. Come verificare se un file è vuoto in Bash?

  2. Come verificare se sed ha modificato un file

  3. Come grep \n nel file

  4. Come verificare se la shell attualmente in esecuzione è BusyBox

  5. Come verificare se ssh-agent è già in esecuzione in bash?

Come verificare se un file o una directory esiste in Bash

Come controllare tutti i servizi in esecuzione in Linux

Come controllare/riparare il file system Linux all'avvio

Come controllare e riparare un file system in RHEL Linux

Come verificare se esiste un file o una directory in Bash Shell

Come posso controllare la sintassi di uno script Bash senza eseguirlo?