The Linux df command allows a user to view filesystem reports on the Linux command line. This utility is very useful when you need information on a systems storage space utilization. The df command is part of the GNU Core Utilities and is expected to be available on all Linux systems. Although many people use it daily to monitor disk space, knowing all of it's options can help you become more efficient as a system administrator. In this article we will break down it's options and explain how to use them. We will also explain the output of each option.
It is important to understand that df works on the filesystem level, not the hard drive. A hard drive is a physical device, whereas a filesystem is a logical construct created by the operating system to store files on the physical hard drive.
Basic Usage of the df Command
Like most Linux commands you can start using df by simply invoking it from the command line.
In the output, you will see some information about the active file systems. First, you will see the location of the file system. The 1K-blocks column refers to the disk block where the file system starts. Next you will see disk space utilization on that file system in KB, as well as the available space and the percentage in use. Finally, the mount location of the filesystem, also known at the mount point.
Display df Command Output in Human-Readable Format
Kilobytes is the default display unit of size. This is not the easiest format for a user to read, especially when you start to use filesystems larger than 1TB. To make it easier to quickly read the output you can use the -h (--human-readable) option. This will display the output in Kb, MB, or GB.
Display Filesystem Type with df Command
To show the type of filesystem use the -T (--print-type) option. This adds a column for each row that displays the filesystem type. For this example I mounted a cifs share and you can see that clearly labeled on the last row of output.
As you can see there are several filesystem types listed.
Display Only Filesystem of Specific Type
The -t (--type) option allows the df command to only display the information for specific filesystem types. For example, if we wanted to list only information for the xfs filesystems, we could use -t followed by xfs.
Exclude Specific Filesystem Types
The -x (--exclude-type) excludes specific filesystem types from the list. Here is an example of how to exclude all of the temporary file systems or tmpfs.
Display Local Filesystems Only
A local filesystem is one that is mounted locally, meaning it does not have to go out to the network to mount it. You can use the -l (--local) option to show only filesystems that are local to your system. An example of a remote filesystem would be the cifs share we mounted and displayed in the above sections. Here we will use df to list the filesystems, which include the cifs share. Then we will list them again using the -l (--local) option to exclude the remote share.
As you can see, using the -l option excluded the remote cifs share.
Display inode Information with df Command
An inode is a data structure that describes a file or directory and stores all of it's attributes. You can display the inode information for a filesystem by using the -i (--inodes) option.
Include Dummy Filesystems
Dummy filesystems are pseudo filesystems (sys, proc, etc) or automount points that are usually ignored. If you wish to display them you can use the -a (--all) option.
Display Size Grand Total of All Filesystems
You can display grand totals for all of the columns using the --total option. I use this sometimes if I have a single physical disk with multiple filesystems and want to know how much space is left.
To show ONLY the totals, you can pipe the output to the tail command.
[savona@CentOS7Dev ~]$ df --total -h | tail -n 1 total 12T 1.6T 11T 13% -
Forcing a Filesystem Sync (Update)
A filesystem sync is flushing the file system buffers and committing the changed blocks on the disk and updating the super block. By default the Linux df command reports the disk usage without doing a filesystem sync. This is usually fine as there won't be much difference unless you have a ton of disk I/O. If you prefer to run a sync before reporting the disk utilization, you can use the --sync option, like so:
Combining Options for Desired Output
As with most Linux commands you can combine options to display your desired output. In the below example we combine the sync, human readable and total options.
[savona@CentOS7Dev ~]$ df --sync -h --total Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos_centos7dev-root 43G 4.6G 39G 11% / devtmpfs 1.5G 0 1.5G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 18M 1.5G 2% /run tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 1014M 206M 809M 21% /boot tmpfs 303M 4.0K 303M 1% /run/user/42 tmpfs 303M 44K 303M 1% /run/user/1000 //10.0.0.5/vault 12T 1.6T 11T 13% /mnt/vault total 12T 1.6T 11T 13% -
Conclusion
In this post we discussed using the Linux df command and it's popular features. You should now be comfortable getting the disk space utilization reports from your Linux system. Because of the way the df command formats it's output, it can also be useful for getting mount point and other information as well.
If you enjoyed this article be sure to read our articles on other basic Linux commands.