Df (Unix)

Last updated
df
Original author(s) Ken Thompson,
Dennis Ritchie
(AT&T Bell Laboratories)
Developer(s) Various open-source and commercial developers
Initial release3 November 1971;53 years ago (1971-11-03)
Operating system Unix, Unix-like
Platform Cross-platform
Type Command
License coreutils: GPLv3+

df is a shell command for reporting the amount of available and consumed storage space on a file system.

Contents

Although df is short for disk free, the command is not limited to disk storage. It was developed during the long period of time when disk-based storage was the ubiquitous mass storage technology.

The Single Unix Specification (SUS) specifies that space is reported in blocks of 512 bytes, and that at a minimum, it reports the file system names and the amount of free space. Using 512-bytes as the unit of measure is a historical practice and maintains compatibility with ls and other commands. Notably, the file system need not be constrained to internally use 512-byte blocks. The -k option was added as a compromise measure. It was agreed by the standard developers that 512 bytes was the best default unit because of its complete historical consistency on System V (versus the mixed 512/1024-byte usage on BSD systems), and that a -k option to switch to 1024-byte units was a good compromise. Users who prefer the more logical 1024-byte quantity can use alias to map df to df -k without breaking many historical scripts relying on the 512-byte units.

The command first appeared in Version 1 AT&T Unix. [1] The command is part of the X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX and the Single Unix Specification (SUS). [2] The implementation of df bundled in GNU coreutils was written by Torbjorn Granlund, David MacKenzie, and Paul Eggert. [3] The command is available for Windows via UnxUtils. [4]

Use

Any number of file parameters can be specified on the command line to select the storage for the file system containing the file.

SUS specifies options -k and -P but most implementations include additional options. Notable options include:

-k

Use 1024-byte units, instead of the default 512-byte units, when writing space figures.

-P

Output in portable format.

-h

The human-readable option selects to format sizes in metric units (e.g. 10 MB). Available in the BSD and GNU coreutils.

-i

Lists inode usage. Available in the BSD and GNU coreutils.

-l

Restricts reporting to local filesystems. Available in the BSD and GNU coreutils versions.

-T

Includes file system type information. Available in the GNU implementation.

Output

The output with -P consists of a line of information for each specified file system, like:

fs nametotal spacespace usedspace freepercentage usedfs root

where:

fs name

The name of the file system, in an implementation-defined format.

total space

The total size of the file system in block size units. The exact meaning of this figure is implementation-defined, but should include space used, space free, plus any space reserved by the system not normally available to a user.

space used

The total amount of space allocated to existing files in the file system, in block size units.

space free

The total amount of space available within the file system for the creation of new files by unprivileged users, in block size units. When this figure is less than or equal to zero, it shall not be possible to create any new files on the file system without first deleting others, unless the process has appropriate privileges. The figure written may be less than zero.

percentage used

The percentage of the normally available space that is currently allocated to all files on the file system. This shall be calculated using the fraction:

space used/(space used + space free)

expressed as a percentage. This percentage may be greater than 100 if space free is less than zero. The percentage value shall be expressed as a positive integer, with any fractional result causing it to be rounded to the next highest integer.

fs root

The directory below which the file system hierarchy appears

Examples

Example output from the df command:

$ df Filesystem      1K-blocks      Used  Available Use% Mounted onudev             48764976         0   48764976   0% /devtmpfs             9757068    173100    9583968   2% /run/dev/sda2      1824504008 723009800 1008791744  42% /tmpfs            48785328         0   48785328   0% /dev/shmtmpfs                5120         0       5120   0% /run/locktmpfs            48785328         0   48785328   0% /sys/fs/cgroup/dev/sda1          523248      3672     519576   1% /boot/efi$ df-i Filesystem        Inodes   IUsed     IFree IUse% Mounted onudev            12191244     500  12190744    1% /devtmpfs           12196332     702  12195630    1% /run/dev/sda2      115859456 2583820 113275636    3% /tmpfs           12196332       1  12196331    1% /dev/shmtmpfs           12196332       5  12196327    1% /run/locktmpfs           12196332      16  12196316    1% /sys/fs/cgroup/dev/sda1              0       0         0     - /boot/efi$ df-h Filesystem      Size  Used Avail Use% Mounted onudev             47G     0   47G   0% /devtmpfs           9.4G  170M  9.2G   2% /run/dev/sda2       1.7T  690G  963G  42% /tmpfs            47G     0   47G   0% /dev/shmtmpfs           5.0M     0  5.0M   0% /run/locktmpfs            47G     0   47G   0% /sys/fs/cgroup/dev/sda1       511M  3.6M  508M   1% /boot/efi

See also

References

  1. df(1)    FreeBSD General Commands Manual
  2. df   Shell and Utilities Reference, The Single UNIX Specification , Version 5 from The Open Group
  3. df(1)    Linux General Commands Manual
  4. "Native Win32 ports of some GNU utilities". unxutils.sourceforge.net.

Manual pages