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

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

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

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

решение1

EDIT: Мне следует чаще читать man-страницы. Это так же просто, как

df --total -h /dev/sd*

Ладно, я кое-что понял.

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

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

решение2

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

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

Другой способ сделать это — использовать lsblkкоманду

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

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

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