200

What is the command to find out how much disk space is being used/remaining?

9 Answers 9

269

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?

74

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
2
  • excellent options. especially pydf and discus
    – Ubuntuser
    Jul 29, 2012 at 22:11
  • Can pydf ignore snap usage sizes
    – alper
    Jul 19, 2021 at 14:00
9

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
9

GNOME System Monitor

If you prefer graphical gnome-system-monitor:

screenshot

Disk Usage Analyzer

screenshot

The Disk Usage Analyzer counterpart for CLI would be ncdu.

1
  • Thanks! It took me forever to find this answer!
    – Ryan
    Mar 25, 2023 at 17:28
9

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.

2
  • awesome!!! thanks for it! Jun 5, 2023 at 12:01
  • This is an excellent solution for servers Nov 1, 2023 at 14:17
8

Try du -sh <dir>.

For example, du -sh /home/mark will show a summarised usage report in human-readable output for /home/mark.

4

df -h is your best bet (run it in the Terminal).

1

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.

1

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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .