У меня есть сценарий bash, который вычисляет процент использованного дискового пространства для данного раздела:
df -k $devname | grep -v ^File | awk '{printf ("%i",$3*100 / $2); }
Он не работает с разделом с длинным именем, потому что имя подталкивает другие столбцы к следующей строке, как мне это исправить?
df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup60-ROOT 2865493440 2222006740 497927968 82% / tmpfs 30913808 0 30913808 0% /dev/shm /dev/sda1 495844 103347 366897 22% /boot
2 ответа
Параметр -P
(переносимость) для df
использует выходной формат, совместимый с posix, и сохраняет все в одной строке. Вы также можете упростить часть awk
, используя sel
.
Вместо анализа всей «таблицы» вы можете напрямую вывести использование в процентах, используя параметр --output
(см. man 1 df
для подробностей):
$ df -k --output=pcent /dev/sda1
Use%
13%
Это должно быть намного проще отфильтровать.
Например. создав массив с помощью readarray
в Bash 4:
$ readarray -t -s 1 percentage < <(df -k --output=pcent /dev/sda1)
$ echo "${percentage[0]// /}"
13%
Назначение вывода df
массиву построчно:
$ percentage=($(df -k --output=pcent /dev/sda1))
$ echo "${percentage[1]}"
13%
FIELD_LIST
для --output
. Хорошая вещь.
smartctl
или nvidia-smi
тоже. :)
Похожие вопросы
Новые вопросы
linux
ВНИМАНИЕ: Все вопросы по Linux должны быть связаны с программированием; те, которые не будут закрыты. Используйте этот тег, только если ваш вопрос касается программирования с использованием API-интерфейсов Linux или поведения, специфичного для Linux, а не только потому, что вы запускаете свой код в Linux. Если вам нужна поддержка Linux, вы можете попробовать https://unix.stackexchange.com или сайт Stack Exchange конкретного дистрибутива Linux, например https://askubuntu.com или https://elementaryos.stackexchange.com/.
df
, есть один, который сохраняет все в одной строке (возможно, как побочный эффект какого-то другого свойства). Удачи.