2016-04-13 2 views
5

В сценарии bash мне нужно получить общий размер диска и используемый в данный момент размер всего диска.Получить свободное место на жестком диске в linux

Я знаю, что я могу получить общий размер диска без необходимости быть корень с этой командой:

cat /sys/block/sda/size 

Эта команда будет выводить количество блоков на устройстве SDA. Умножьте его на 512, и вы получите количество байтов на этом устройстве. Этого достаточно для общего размера диска.

Теперь для используемого пространства. Я хочу получить это значение без root. Я могу предположить, что имя устройства - SDA. Теперь есть эта команда: df Я думал, что смогу использовать эту команду, но кажется, что эта команда выводит только данные из смонтированных в данный момент разделов.

Есть ли способ получить в общей сложности пространство, используемое на диске SDA, не нуждаясь в корне, и не все разделы должны быть установлены?

Давайте предположим, что следующий пример:

/dev/sda1 80GB Linux partition 20GB Used 
/dev/sda2 80GB Linux Home partition 20GB Used 
/dev/sda3 100GB Windows Parition. 30GB Used 

Давайте предположим, мой SDA диск разбит на разделы, как и выше. Но пока я на Linux, мой раздел Windows (sda3) не монтируется.

Выход df даст мне в общей сложности 40 ГБ. Используется так, чтобы он не учитывал sda3.

Снова вопрос: Есть ли способ без корня, чтобы получить в общей сложности 70 ГБ используемого пространства?

+0

'FDISK -l' с Судом? – ritesht93

+0

Как и мой вопрос, я знаю способы с помощью sudo. Однако эта программа не будет работать с правами sudo. По крайней мере, я стараюсь этого не делать. Мне действительно нужно решение без sudo – Baklap4

+0

lsblk | tr -s '' | cut -d '' -f1,4 | column -t – Joda

ответ

1

Я думаю stat команда должна помочь. Вы можете получить разделы с /proc/partitions.

Пример вывода команды stat:

$ stat -f /dev/sda1 
    File: "/dev/sda1" 
    ID: 0  Namelen: 255  Type: tmpfs 
Block size: 4096  Fundamental block size: 4096 
Blocks: Total: 237009  Free: 236970  Available: 236970 
Inodes: Total: 237009  Free: 236386 
-1

Вы можете использовать df.

df -h --output='used' /home 
Used 
3.2G 

Если объединить это с какой-то sed или awk вы можете иметь значение, которую вы ищете

+0

Как я уже сказал, df не даст мне то, что мне нужно. Как он дает вам общую директорию. Я не знаю, какие разделы у меня есть. Так что это не поможет. Кроме того, df поддерживает только подключенные в данный момент устройства. который не является полным дисковым пространством. – Baklap4

Смежные вопросы