Как получить свободное место на диске с помощью команды?

Я ненавижу удалять старые посты, но это единственное подходящее место для публикации этой информации. В CentOS 7 установка MariaDB 10 по умолчанию (с использованием стандартных rpm CentOS )имеет неправильное расположение файлов часовых поясов. У нас были проблемы с приложениями, которые зависят от MySQL для получения информации о часовом поясе. Независимо от того, какие настройки мы использовали в приложениях, они всегда возвращали время часового пояса UTC.

Это:

mysql_tzinfo_to_sql /usr/share/zoneinfo/right |mysql -u root mysql -p

Немедленно исправил проблему. Нет необходимости в перезагрузке! Я очистил кеш и т. д. для хорошей меры...

0
24.04.2021, 03:20
2 ответа

sfdisk -F /dev/sdX напечатает как сумму свободного места, так и список областей свободного пространства:

# sfdisk -F /dev/sde
Unpartitioned space /dev/sde: 477.77 MiB, 500973568 bytes, 978464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

 Start     End Sectors  Size
 22528   32527   10000  4.9M
 53248   69391   16144  7.9M
 71680  479231  407552  199M
479232 1023999  544768  266M

Так что, если вас интересует только сумма, вы можете разобрать ее с первой строки:

# sfdisk -F /dev/sde | head -1 | cut -d":" -f2 | cut -d"," -f1
 477.77 MiB

Обратите внимание, что вычисление свободного пространства таким образом сложно. Здесь у меня есть 478 МБ свободного места, но это не значит, что я могу использовать все это, я сделал разделы таким образом, что первые две свободные области непригодны для использования (слишком малы для использования ), а пространство в в конце диска нет единого сплошного свободного места. Это преувеличенный пример, но я видел худшее разбиение, чем это:-)

Если вы хотите получить «самое большое свободное непрерывное пространство, используемое для раздела», вам нужно проверить начало и конец, типы разделов и т. д., и это будет сложно проанализировать из вывода bash, вам, вероятно, потребуется используйте библиотеку (, например libfdisk или libblockdev)для получения точной информации (что означает программирование на C или Python ).

1
28.04.2021, 22:51

Мне больше всего нравится способ Фредди, все выходные данные содержат информацию, которую я ищу, нет необходимости искать новый инструмент, чтобы получить. Позвольте мне сделать еще один комментарий здесь для начинающих, как я:
Идея Фредди верна, номер немного не тот, чтобы получить использованный сектор:

Список всех используемых секторов:

sudo fdisk -l  /dev/sda |tail -n 5
/dev/sda1       2048 390819839 390817792 186.4G Linux filesystem
/dev/sda2  390819840 422070271  31250432  14.9G Linux swap
/dev/sda3  422070272 423120895   1050624   513M EFI System
/dev/sda4  423120896 423153663     32768    16M Microsoft reserved
/dev/sda5  423153664 628613119 205459456    98G Microsoft basic data

Подсчет всех используемых секторов в 4-м столбце:

sudo fdisk -l  /dev/sda |tail -n 5 | awk '{count=count+$4}END{print count}'
628611072

Это 628611072 вместо 628613120.

Free sectors = total sectors - used sectors
            = 976773168 - 628611072
            = 348162096

Один сектор содержит 512 байт, свободного места:

(976773168 - 628611072)*512/(1024*1024*1024)
=166G

Спасибо за идею Фредди.

0
28.04.2021, 22:51

Теги

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