What is the command to find out how much disk space is being used/remaining?
9 Answers
You can use two commands: df
and du
.
df
- report file system disk space usage
Usage works like such:
df -h
Which should output something like this:
Filesystem Size Used Avail Use% Mounted on
/dev/vzfs 20G 3.5G 16G 18% /
The -h
flag provides human readable output (which makes reading of the output - easier).
du
- estimate file space usage
A second tool is with du
which is a slower approach but will give you a better break down of a per directory. Information on that can be found in How to determine where the biggest files/directories on my system are stored?
There are several good command line tools for reporting disk usage. Use the one that's most helpful to you:
df
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 56G 4.4G 48G 9% /
none 1.5G 256K 1.5G 1% /dev
none 1.5G 472K 1.5G 1% /dev/shm
none 1.5G 400K 1.5G 1% /var/run
none 1.5G 0 1.5G 0% /var/lock
tmpfs 1.5G 596K 1.5G 1% /var/log
tmpfs 1.5G 8.0K 1.5G 1% /var/log/apt
/dev/sdb2 840G 579G 253G 70% /home
df is installed by default.
pydf
$ pydf
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 55G 4437M 48G 7.9 [##.........................] /
none 1506M 256k 1505M 0.0 [...........................] /dev
/dev/sdb2 839G 578G 252G 68.9 [###################........] /home
Column headers are colored.
discus
$ discus
Mount Total Used Avail Prcnt Graph
/ 55.02 GB 4.33 GB 50.69 GB 7.9% [*---------]
/sys 0 KB 0 KB 0 KB 0.0% [----------]
+onnections 0 KB 0 KB 0 KB 0.0% [----------]
+rnel/debug 0 KB 0 KB 0 KB 0.0% [----------]
+l/security 0 KB 0 KB 0 KB 0.0% [----------]
/dev 1.47 GB 256 KB 1.47 GB 0.0% [----------]
/dev/shm 1.48 GB 472 KB 1.48 GB 0.0% [----------]
/var/run 1.48 GB 400 KB 1.48 GB 0.0% [----------]
/var/lock 1.48 GB 0 KB 1.48 GB 0.0% [----------]
/var/log 1.48 GB 596 KB 1.48 GB 0.0% [----------]
+ar/log/apt 1.48 GB 8 KB 1.48 GB 0.0% [----------]
/home 839.00 GB 578.13 GB 260.87 GB 68.9% [*******---]
+infmt_misc 0 KB 0 KB 0 KB 0.0% [----------]
+e/ak/.gvfs 0 KB 0 KB 0 KB 0.0% [----------]
Column headers and progress bars are colored.
di
$ di
Filesystem Mount Mebis Used Avail %Used fs Type
/dev/sda1 / 56340.2 4436.7 49041.6 13% ext4
/dev/sdb2 /home 859138.9 592008.8 258401.8 70% ext4
tmpfs /var/log 1511.2 0.6 1510.6 0% tmpfs
tmpfs /var/log/apt 1511.2 0.0 1511.2 0% tmpfs
You can use this command to find out how much space files in your home directory (replace ~/
with /
for entire filesystem) and sort by largest files
du -sk ~/* | sort -n
GNOME System Monitor
If you prefer graphical gnome-system-monitor
:
Disk Usage Analyzer
The Disk Usage Analyzer counterpart for CLI would be ncdu
.
Try du -sh <dir>
.
For example, du -sh /home/mark
will show a summarised usage report in human-readable output for /home/mark
.
ncdu
You can also use ncdu
(available directly from the Ubuntu repos) which use the ncurses library for showing a graphical overview directly in the terminal.
For example:
ncdu -x /
will analyze disk usage on root partition without crossing filesystem boundaries.
Note that df -h
will show you only remaining space on mounted partitions. Suppose there are NTFS and FAT32 partitions too before running it note that mount all the partitions. If Ubuntu is sole OS on your machine then I don't see any problem with df
.
Get one value that expresses disk utilization in percent
This expression takes all volumes total, available und used space in kB and summarizes the values and finally calculates a total percentage of disk utilization.
df --block-size=1K --output=source,size,used,avail | awk 'NR > 1 {total_size += $2; total_used += $3} END {printf "%.1f%%\n", total_used / total_size * 100}'
Use this at your own risk.
This might possibly fail for your use case. If you want to manually check disk utilization df -h
will be totally fine.
Again, this is by no means perfect. If you use this, make sure you test this individually on each machine if the volumes you are interested in are covered and represented with the correct return values.
Full command for custom monitoring expressions (e.g. zabbix)
I wanted to exclude volumes whose usage is smaller than 5GB (5000000 kB) and also exclude some other volumes I had no interest in. This works nicely with zabbix or any other monitoring tool that uses custom expressions.
You can debug this by removing the awk expression and decide what you want to include or not.
This command parameterizes a threshold value with a Makro in Zabbix and looks like this:
df --block-size=1K --output=source,size,used,avail | awk '!/tmpfs|loop|shm|overlay|udev/ && $3 >= {$DISK.MIN.SIZE} && NR > 1 {total_size += $2; total_used += $3} END {printf "%.1f%%\n", total_used / total_size * 100}'
I was then able to set the default threshold ({$DISK.MIN.SIZE}) to 0 and increase it to e.g. 5GB for one machine where I had a volume that I didn't want to track, since it was almost empty.