Man Linux: Main Page and Category List

NAME

       du - estimate file space usage

SYNOPSIS

       du [-a | -s][-kx][-H | -L][file ...]

DESCRIPTION

       By  default,  the du utility shall write to standard output the size of
       the file space allocated to, and the size of the file  space  allocated
       to  each  subdirectory  of,  the  file  hierarchy rooted in each of the
       specified files. By default, when a symbolic link is encountered on the
       command  line  or in the file hierarchy, du shall count the size of the
       symbolic link (rather than the file referenced by the link), and  shall
       not  follow the link to another portion of the file hierarchy. The size
       of the file space allocated to  a  file  of  type  directory  shall  be
       defined  as  the  sum total of space allocated to all files in the file
       hierarchy rooted in the directory  plus  the  space  allocated  to  the
       directory itself.

       When  du  cannot  stat()  files or stat() or read directories, it shall
       report an error condition and the final exit status is affected.  Files
       with  multiple  links  shall be counted and written for only one entry.
       The directory entry that is selected in the report is  unspecified.  By
       default,  file  sizes shall be written in 512-byte units, rounded up to
       the next 512-byte unit.

OPTIONS

       The du  utility  shall  conform  to  the  Base  Definitions  volume  of
       IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelines.

       The following options shall be supported:

       -a     In  addition to the default output, report the size of each file
              not of type directory  in  the  file  hierarchy  rooted  in  the
              specified  file.  Regardless  of  the presence of the -a option,
              non-directories given as file operands shall always be listed.

       -H     If a symbolic link is specified on the command  line,  du  shall
              count  the  size of the file or file hierarchy referenced by the
              link.

       -k     Write the files sizes in units of 1024 bytes,  rather  than  the
              default 512-byte units.

       -L     If  a  symbolic  link  is  specified  on  the  command  line  or
              encountered during the traversal of a file hierarchy,  du  shall
              count  the  size of the file or file hierarchy referenced by the
              link.

       -s     Instead of the default output, report only  the  total  sum  for
              each of the specified files.

       -x     When  evaluating file sizes, evaluate only those files that have
              the same device as the file specified by the file operand.

       Specifying more than one of the mutually-exclusive options  -H  and  -L
       shall  not  be  considered  an  error.  The last option specified shall
       determine the behavior of the utility.

OPERANDS

       The following operand shall be supported:

       file   The pathname of a file whose size is to be written. If  no  file
              is specified, the current directory shall be used.

STDIN

       Not used.

INPUT FILES

       None.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of du:

       LANG   Provide  a  default value for the internationalization variables
              that are unset or null. (See  the  Base  Definitions  volume  of
              IEEE Std 1003.1-2001,    Section    8.2,    Internationalization
              Variables for the precedence of  internationalization  variables
              used to determine the values of locale categories.)

       LC_ALL If  set  to a non-empty string value, override the values of all
              the other internationalization variables.

       LC_CTYPE
              Determine the locale for  the  interpretation  of  sequences  of
              bytes  of  text  data as characters (for example, single-byte as
              opposed to multi-byte characters in arguments).

       LC_MESSAGES
              Determine the locale that should be used to  affect  the  format
              and contents of diagnostic messages written to standard error.

       NLSPATH
              Determine the location of message catalogs for the processing of
              LC_MESSAGES .

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       The output from du shall consist of the amount of space allocated to  a
       file and the name of the file, in the following format:

              "%d %s\n", <size>, <pathname>

STDERR

       The standard error shall be used only for diagnostic messages.

OUTPUT FILES

       None.

EXTENDED DESCRIPTION

       None.

EXIT STATUS

       The following exit values shall be returned:

        0     Successful completion.

       >0     An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       None.

EXAMPLES

       None.

RATIONALE

       The  use  of  512-byte  units  is  historical  practice  and  maintains
       compatibility  with  ls  and  other  utilities  in   this   volume   of
       IEEE Std 1003.1-2001. This does not mandate that the file system itself
       be based on 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 1024-byte quantity can easily alias du to du -k
       without breaking the many historical scripts relying  on  the  512-byte
       units.

       The -b option was added to an early proposal to provide a resolution to
       the situation where System V and BSD  systems  give  figures  for  file
       sizes in blocks, which is an implementation-defined concept. (In common
       usage, the block size is 512 bytes for System V and 1024 bytes for  BSD
       systems.)  However,  -b  was  later  deleted,  since  the  default  was
       eventually decided as 512-byte units.

       Historical file systems provided no way to obtain exact figures for the
       space  allocation  given  to  files.  There  are  two  known  areas  of
       inaccuracies in historical file systems: cases of indirect blocks being
       used  by  the  file  system  or  sparse files yielding incorrectly high
       values. An indirect block is space used  by  the  file  system  in  the
       storage  of  the  file,  but  that  need  not  be  counted in the space
       allocated to the file. A sparse file is one in which  an  lseek()  call
       has  been  made  to  a position beyond the end of the file and data has
       subsequently been written  at  that  point.  A  file  system  need  not
       allocate  all  the intervening zero-filled blocks to such a file. It is
       up to the implementation to define exactly  how  accurate  its  methods
       are.

       The  -a  and -s options were mutually-exclusive in the original version
       of du. The POSIX Shell and Utilities  description  is  implied  by  the
       language  in  the SVID where -s is described as causing "only the grand
       total" to be reported.  Some systems may produce output for -sa, but  a
       Strictly  Conforming  POSIX  Shell and Utilities Application cannot use
       that combination.

       The -a and -s options were adopted from the SVID except that the System
       V behavior of not listing non-directories explicitly given as operands,
       unless the -a option is specified, was considered a bug; the  BSD-based
       behavior (report for all operands) is mandated. The default behavior of
       du in the SVID with regard to reporting the failure to read  files  (it
       produces no messages) was considered counter-intuitive, and thus it was
       specified that the POSIX Shell and Utilities default behavior shall  be
       to  produce  such messages. These messages can be turned off with shell
       redirection to achieve the System V behavior.

       The -x option is historical practice on recent  BSD  systems.   It  has
       been  adopted  by this volume of IEEE Std 1003.1-2001 because there was
       no other historical method of limiting the du search to a  single  file
       hierarchy.  This  limitation  of  the  search  is  necessary to make it
       possible to obtain file space usage information about a file system  on
       which  other  file  systems  are mounted, without having to resort to a
       lengthy find and awk script.

FUTURE DIRECTIONS

       None.

SEE ALSO

       ls , the System Interfaces volume of IEEE Std 1003.1-2001, stat()

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .