April 18, 2024

how to check disk space in Linux

Investigate Directories For Disk Usage

Sometimes it may be required to find out which directory consuming how much disk space especially when you are used df -h and realized your available disk space is low.


du command summarizes disk usage of the set of FILEs, recursively for directories.

It’s often uses with -sh option:

-s, --summarize
 display only a total for each argument
 -h, --human-readable
 print sizes in human readable format (e.g., 1K 234M 2G)

For summarizing disk usages of the files in the current directory we use:

du -sh *

Example output:

572K Documents
4,0K Music
724K Pictures
4,0K Public
4,0K Templates
4,0K Videos

We can also include hidden files with using:

du -sh .[!.]* *

Example output:

 6,3M .atom
 4,0K .bash_history
 4,0K .bash_logout
 8,0K .bashrc
 350M .cache
 195M .config
 12K .dbus
 4,0K .dmrc
 44K .gconf
 60K .gem
 520K .gimp-2.8
 28K .gnome
 4,0K .ICEauthority
 8,3M .local
 8,0K .nano
 404K .nv
 36K .pki
 4,0K .profile
 8,0K .ssh
 0 .sudo_as_admin_successful
 4,0K .Xauthority
 4,0K .xsession-errors
 4,0K .xsession-errors.old
 572K Documents
 4,0K Music
 724K Pictures
 4,0K Public
 4,0K Templates
 4,0K Videos

Thirdly, you can add total to the output by adding ,-c, option:

du -sch .[!.]* *


 4,0K Templates
 4,0K Videos
 769M total

Most importantly using du command properly on the root directory is a life-saving action to find out what application/service or user is consuming your disk space wildly. For example, in case of a ridiculously low level of disk space availability for a web and mail server, the reason could be a spam attack to your mail service and you can diagnose it just by using du command.

Investigate root directory for disk usage:

sudo du -sch /.[!.]* /*

Example output:

 16K /.VolumeIcon.icns
 24K /.VolumeIcon.png
 13M /bin
 57M /boot
 4,0K /cdrom
 620K /dev
 13M /etc
 779M /home
 0 /initrd.img
 406M /lib
 3,9M /lib32
 4,0K /lib64
 16K /lost+found
 4,0K /media
 4,0K /mnt
 367M /opt
 du: cannot access '/proc/18221/task/18221/fd/4': No such file or   directory
 du: cannot access '/proc/18221/task/18221/fdinfo/4': No such file or directory
 du: cannot access '/proc/18221/fd/4': No such file or directory
 du: cannot access '/proc/18221/fdinfo/4': No such file or directory
 0 /proc
 20K /root
 du: cannot access '/run/user/1000/gvfs': Permission denied
 9,4M /run
 13M /sbin
 4,0K /srv
 0 /sys
 72K /tmp
 3,5G /usr
 639M /var
 0 /vmlinuz
 5,8G total

Lastly, the best method forms when you add a threshold size value for directories to ignore small ones. This command will only show folders with more than 1GB in size which located under root directory up to the farthermost branch of the whole directory tree in your file system:

sudo du --threshold=1G -ch /.[!.]* /*

Example output:

 1,4G /usr/lib
 1,8G /usr/share
 3,5G /usr
 5,8G total

Checking Disk Space

It’s quite common to want to check the status of the various partitions/drives on your server/computer to see how full they are. The following command is the one you’ll want to run:

df -h

This will produce output similar to the following:

 [root@mail ~]# df -h
 Filesystem Size Used Avail Use% Mounted on
  19G 1.6G 16G 9% /
 tmpfs 245M 0 245M 0% /dev/shm
 /dev/sda1 485M 47M 413M 11% /boot

In this basic example, we can see that the / partition only has 9% used.

For a more complex example that also covers using df to see various mountpoints, see below:

 [root@mail ~]# df -h
 Filesystem Size Used Avail Use% Mounted on
 /dev/mapper/VG-root 1.9T 1.7T 89G 95% /
 /dev/mapper/VG-var 431G 145G 264G 36% /var
 devtmpfs 7.8G 204K 7.8G 1% /dev
 tmpfs 7.8G 4.0K 7.8G 1% /dev/shm
 /dev/md1 495M 126M 344M 27% /boot
 ku.example.com:9421 2.5T 487G 2.0T 20% /mnt/test
 tmpfs 500M 86M 415M 18% /var/ngx_pagespeed_cache

In this example, we have a / partition that’s 95% full along with an additional /var partition that’s only 36% full. It’s got an external network mount of 2T that’s mounted on /mnt/test and a ramdisk/tmpfs mount of 500M mounted on /var/ngx_pagespeed_cache.

Vedant Kumar

Currently I'm working as an Implementation Engineer, Started my career as an System Administrator - Linux. Additionally loves to explore new technologies and research about new open-source software that ease the development cycle.

View all posts by Vedant Kumar →

Leave a Reply

Your email address will not be published. Required fields are marked *

The reCAPTCHA verification period has expired. Please reload the page.


Ad Blocker Detected!

We've noticed that you are using an ad blocker. Advertising helps fund our server cost and keep it truly independent. It helps to build our content creator team. So please disable your ad blocker, and help us to keep providing you with free- great content - for free. Thank you for your support.