Como exibir o resultado de df a cada 30s? [duplicado]

4

Tudo que eu quero ver é o% depois que eu emito df / a cada 30s, mas na mesma linha logo após o número anterior.

Assim, o resultado final seria 86% 86% 86% 87% 87% ......

Poderia ser um código de linha? Ou múltipla linha 'programa'?

    
por Radek 23.04.2013 / 07:28

5 respostas

4
while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"; do
    sleep 30
done
echo
    
por 23.04.2013 / 07:40
11

Eu preferiria

watch -n 30 df

Assista ao homem :

watch - execute a program periodically, showing output fullscreen

    
por 23.04.2013 / 07:41
4

você pode usar watch :

watch -n 30 -t df /

Mas isso substitui a saída existente

    
por 23.04.2013 / 07:33
2

Bruto, mas funciona:

while true; do printf "%s " $(df / | awk '/root/ {print $5}'); sleep 30; done
    
por 23.04.2013 / 07:38
1

Para o bash:

i=1
outputs_per_line=10
frequency=30
while true; do
  echo -n "$(df / | awk 'NR==2 {print $5}') "
  if [ $((i%outputs_per_line)) -eq 0 ]; then
    echo
  fi
  ((i++))
  sleep "$frequency"
done

A quebra de linha após $ outputs_per_line números deve evitar uma quebra de linha do console dentro da saída.

    
por 23.04.2013 / 07:43