while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"; do
sleep 30
done
echo
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'?
Eu preferiria
watch -n 30 df
watch - execute a program periodically, showing output fullscreen
você pode usar watch
:
watch -n 30 -t df /
Mas isso substitui a saída existente
Bruto, mas funciona:
while true; do printf "%s " $(df / | awk '/root/ {print $5}'); sleep 30; done
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.
Tags df shell-script