Как я могу проверить общую свободную емкость памяти, оставшуюся в моей системе на нескольких жестких дисках?

У меня есть 15 жестких дисков SATA, подключенных к моему компьютеру, и мне нужно пройти через них один по одному записывать свободное место, а затем подводить итоги - не идеально.

Есть ли команда или комбинация команд, которая могла бы это сделать? В идеале я мог бы передать что-то вроде / dev / sd * , поскольку я не хочу включать диски nvme.

1
задан 6 June 2021 в 22:24

2 ответа

РЕДАКТИРОВАТЬ: Мне следует чаще читать справочные страницы. Это так же просто, как

df --total -h /dev/sd*

Хорошо, я кое-что выяснил

df --output=avail  /dev/sd* | tail -n +2 | datamash sum 1

В основном это выводит список смонтированных дисков и отображение только доступного пространства в качестве вывода, а затем использование tail для удаления первой строки, которая является заголовком столбца Доступно , а затем, наконец, суммирование чисел с помощью datamash.

1
ответ дан 28 July 2021 в 11:31

Помните о команде df , чтобы исключить записи виртуального RAM-диска, такие как / dev , используйте параметр -x :

df -x tmpfs -x devtmpfs --total -h

Другой способ сделать это - с помощью команды lsblk

  • -l выводить в формате списка
  • -n пропустить строку заголовка
  • -b напечатать в bytes
  • -o выводит указанные столбцы
  • FSAVAIL распечатать размер файловой системы доступно / свободно
lsblk -l -n -b -o FSAVAIL | grep -v ^$ | \
awk '{sum+=$1} END{print sum}' | numfmt --to=iec

Используйте grep , чтобы исключить пустые строки, awk для суммирования первого столбца и, наконец, numfmt для преобразования байтов в «читаемый человеком» формат.

0
ответ дан 28 July 2021 в 11:31

Другие вопросы по тегам:

Похожие вопросы: