Как отображать результат df каждые 30 секунд?

Как отображать результат df каждые 30 секунд?

Все, что я хочу видеть, — это % после того, как я выдаю df /каждые 30 секунд, но на той же строке, сразу после предыдущего числа.

Итак, конечный результат будет таким:86% 86% 86% 87% 87% ......

Может ли это быть однострочный код? Или многострочная «программа»?

решение1

я бы предпочел

watch -n 30 df

Мужские часы:

watch - периодически выполнять программу, выводя ее на весь экран

решение2

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

решение3

вы можете использовать watch:

watch -n 30 -t df /

Но это перезапишет существующий вывод.

решение4

Для Баша:

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

Разрыв строки после чисел $outputs_per_line должен предотвратить разрыв строки консоли в выходных данных.

Связанный контент